delphi高手请进

xiaojianace 2009-12-24 08:22:21
delphi中如何使用windows API函数实现打开桌面图标 最好有一个例子
...全文
131 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanguomi 2009-12-25
  • 打赏
  • 举报
回复
第一个函数要加
uses
commctrl;
sanguomi 2009-12-25
  • 打赏
  • 举报
回复
楼主只要组装下,应该大部分文件就可以打开了
其他的我懒得写了,
sanguomi 2009-12-25
  • 打赏
  • 举报
回复
遍历桌面,桌面也是个SysListView32 系统标准控件,然后取内容,

var
TextBuffer: array[0..100] of Char;
Count: Integer;
I: Integer;
H: HWND;

function ListView_GetItemText_Ex(hwndLV: HWND; i, iSubItem: Integer;
pszText: PChar; cchTextMax: Integer): Integer;
var
LVItem: TLVItem;
ProcessID, ProcessHD, Temp: DWORD;
MemPoint: Pointer;
begin
GetWindowThreadProcessId(hwndLV, ProcessID);

ProcessHD := OpenProcess(
PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE,
FALSE, ProcessID);

MemPoint := VirtualAllocEx(ProcessHD, nil, SizeOf(TLVItem) + cchTextMax,
MEM_COMMIT, PAGE_READWRITE);

LVItem.iSubItem := iSubItem;
LVItem.cchTextMax := cchTextMax;
LVItem.pszText := PChar(Integer(MemPoint) + SizeOf(TLVItem));

WriteProcessMemory(ProcessHD, MemPoint, @LVItem, SizeOf(TLVItem), Temp);
Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Integer(MemPoint));

ReadProcessMemory(ProcessHD, Pointer(Integer(MemPoint) + SizeOf(TLVItem)),
pszText, cchTextMax, Temp);

VirtualFreeEx(ProcessHD, MemPoint, SizeOf(TLVItem) + cchTextMax,
MEM_DECOMMIT);
VirtualFreeEx(ProcessHD, MemPoint, 0, MEM_RELEASE);
end;
begin
Result := False;
H := FindWindow('Progman', 'Program Manager');
H := GetWindow(H, GW_CHILD);
H := GetWindow(H, GW_CHILD);

Count := SendMessage(H, LVM_GETITEMCOUNT, 0, 0);
for I := 0 to Count - 1 do
begin
ListView_GetItemText_Ex(H, i, 0, TextBuffer, 100); //TextBuffer 为桌面内容
end;
end;


如果是系统的
比如 我的电脑这些
Shellexecute(0, 'open',pchar('::{20D04FE0-3AEA-1069-A2D8-08002B30309D}'), nil, nil, sw_show); 这只是打开我的电脑,其他的你自己找
如果是快捷方式
根据快捷方式,取得文件路径
函数

function GetTargetOfShorCut(LinkFile: string): string;
const
IID_IPersistFile: TGUID = '{0000010B-0000-0000-C000-000000000046}';
var
intfLink: IShellLink;
IntfPersist: IPersistFile;
pfd: _WIN32_FIND_DATA;
bSuccess: Boolean;
T:TStringList;
begin
Result := '';
CoInitialize(nil);
T:=TStringList.Create;
IntfLink := CreateComObject(CLSID_ShellLink) as IShellLink;
SetString(Result, nil, MAX_PATH);
bSuccess := (IntfLink <> nil) and
SUCCEEDED(IntfLink.QueryInterface(IID_IPersistFile, IntfPersist))
and SUCCEEDED(IntfPersist.Load(PWideChar(WideString(LinkFile)), STGM_READ))
and
SUCCEEDED(intfLink.GetPath(PAnsiChar(Result), MAX_PATH, pfd, SLGP_RAWPATH));
if not bSuccess then
Result := '';
CoUninitialize;
end

取得文件路径,再Shellexecute

另外的,比如文件什么的
系统盘 + :\Documents and Settings\' + 当前用户名+'\桌面\开始取的文件名
再一起Shellexecute





yshuui 2009-12-25
  • 打赏
  • 举报
回复
取桌面文件夹的路径,显示下面的文件就可以了。
lxh524 2009-12-24
  • 打赏
  • 举报
回复
你可以用ShellListView 和ShellTreeView 以及 ShellComboBox配合用,不是很简单
xiaojianace 2009-12-24
  • 打赏
  • 举报
回复
就是用delphi语言加windows api 函数打开桌面上的“我的电脑、我的文档,IE”等等图标
yshuui 2009-12-24
  • 打赏
  • 举报
回复
打开桌面图标?什么意思?
xiaojianace 2009-12-24
  • 打赏
  • 举报
回复
具体一点
xiaojianace 2009-12-24
  • 打赏
  • 举报
回复
能举例说明一下吗
贝隆 2009-12-24
  • 打赏
  • 举报
回复
也可以使用sendmessage来发送点击消息
hjkto 2009-12-24
  • 打赏
  • 举报
回复
可以根据桌面的快捷方式图标打开它的程序
gyk120 2009-12-24
  • 打赏
  • 举报
回复
桌面图标没法用API打开,只能模拟点击
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧