Windows 2000版

#include <commctrl.h>
を追加してください。

○デスクトップのアイコンの場所を移動する

//デスクトップのハンドルを取得
HWND hWnd;
hWnd = FindWindow("ProgMan",NULL);
hWnd = GetWindow(hWnd,GW_CHILD);
hWnd = GetWindow(hWnd,GW_CHILD);
if(!hWnd)
    return false;
SendMessage(hWnd, LVM_SETITEMPOSITION, (WPARAM)0, (LPARAM) MAKELPARAM ((int) 10, (int) 10));//set
////////////////////////////////////////////////↑アイコンのインデックス,今は0です//↑座標

○デスクトップのアイコンの場所を取得する

//デスクトップのハンドルを取得
HWND hWnd;
hWnd = FindWindow("ProgMan",NULL);
hWnd = GetWindow(hWnd,GW_CHILD);
hWnd = GetWindow(hWnd,GW_CHILD);
if(!hWnd)  return false;
//プロセスのハンドルを得る
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd,&dwProcessId);
HANDLE hProcess = OpenProcess(
    PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE,
    FALSE,dwProcessId);
if(!hProcess) return false;
//プロセスへメモリ空間をコミット
POINT* pnt = (POINT*)VirtualAllocEx(hProcess,
    NULL,4096,MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);
POINT iconPos;
//アイコンの位置を取得
ListView_GetItemPosition(hWnd,0,pnt);//アイコンのインデックスを指定します。今は0です
//メモリをコピー
ReadProcessMemory(hProcess,pnt,&iconPos,sizeof(POINT),NULL);
//アイコンの座標
//iconPos.x
//iconPos.y
VirtualFreeEx(hProcess,pnt,0,MEM_RELEASE);


○アイコンの数を取得
int iCount = ListView_GetItemCount(hWnd);
 


▲トップページ > Windows と C++