比如桌面上有个图标叫a.txt 如何获取这个图标的坐标?并可以更改它的坐标。怎么实现呢?请高手指教。。谢谢,200分。
解决方案 »
- 如何释放已终止进程的资源
- 请问DBGridEh的cell如何在鼠标移到上面时hint?
- 用web broker,一个网页提交表单后,而接收的action的request里面的无任何参数!!!!这是怎么回事啊。在线等待,急
- intrawen & rave update pack
- delphi程序如何调试啊,一出现错误就出现cpu窗口,为何不定位到某一行源代码呢?
- paradox的数据库谁有比较简单些的还原备份数据的例子?
- DFM文件,為何用記事本打開是亂碼
- 今日焦点----欢迎光顾,在线等待?
- 如何将delphi6程序转化为delphi3程序?
- 使用server页上的Excel相关控件访问excel特别消耗内存?请高手指教。
- 请教:在erp中,锁这个概念用的多吗?
- 这条简单的SQL有错?为什么?
var
vHandle: THandle;
var
vItemCount: Integer;
I: Integer;
vBuffer: array[0..255] of Char;
vProcessId: DWORD;
vProcess: THandle;
vPointer: Pointer;
vNumberOfBytesRead: Cardinal;
vItem: TLVItem;
vPoint: TPoint;
begin
vHandle := FindWindow('progman', nil);
vHandle := FindWindowEx(vHandle, 0, 'shelldll_defview', nil);
vHandle := FindWindowEx(vHandle, 0, 'syslistview32', nil);
vItemCount := ListView_GetItemCount(vHandle);
GetWindowThreadProcessId(vHandle, @vProcessId);
vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or
PROCESS_VM_WRITE, False, vProcessId);
vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT,
PAGE_READWRITE);
try
for I := 0 to vItemCount - 1 do
begin
with vItem do
begin
mask := LVIF_TEXT;
iItem := I;
iSubItem := 0;
cchTextMax := SizeOf(vBuffer);
pszText := Pointer(Cardinal(vPointer) + SizeOf(TLVItem));
end;
WriteProcessMemory(vProcess, vPointer, @vItem,
SizeOf(TLVItem), vNumberOfBytesRead);
SendMessage(vHandle, LVM_GETITEM, I, lparam(vPointer));
ReadProcessMemory(vProcess, Pointer(Cardinal(vPointer) + SizeOf(TLVItem)),
@vBuffer[0], SizeOf(vBuffer), vNumberOfBytesRead);
if SameText('我的电脑', vBuffer) then
begin
ListView_GetItemPosition(vHandle, I, PPoint(vPointer)^);
ReadProcessMemory(vProcess, vPointer, @vPoint, SizeOf(TPoint),
vNumberOfBytesRead);
Caption := Format('%d,%d', [vPoint.X, vPoint.Y]);
Break;
end;
end;
finally
VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess);
end;
end;
begin
Result := FindWindow('progman', nil);
Result := GetWindow(Result, GW_Child);
Result := GetWindow(Result, GW_Child);
end;
ListView_FindItem(hand,-1, ItemInfo); //查找桌面图标
SendMessage(Hand, LVM_SetItemPosition, i, MakeLparam(X, y)); // 设置坐标;不显示扩展名……貌似delphi有函数可以识别扩展名
ExtractFileExt(const FileName:string):string
不过不知道能不能在这种条件下生效
貌似只能获得桌面图标句柄
用ExtractAssociatedIcon可以获得句柄