Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo obtener las coordenadas y el tamaño de un acceso directo del escritorio de Windows en la programación de Windows?

¿Cómo obtener las coordenadas y el tamaño de un acceso directo del escritorio de Windows en la programación de Windows?

DWORD dwProcessId;

HWND hDeskTop

hDeskTop = ::FindWindow( "programman", NULL

hDeskTop = : :FindWindowEx( hDeskTop, 0, "shelldll_defview", NULL );

hDeskTop = ::FindWindowEx( hDeskTop, 0, "syslistview32", NULL //Obtener el identificador de la ventana del escritorio

GetWindowThreadProcessId(hDeskTop, &dwProcessId);//Obtenga el PID del proceso donde se encuentra esta ventana a través del identificador de la ventana del escritorio, que en realidad es el proceso del explorador

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE , dwProcessId);// Abra el proceso PID especificado y obtenga el identificador del proceso

LPVOID lpvPt = VirtualAllocEx(hProcess,NULL,sizeof(POINT),MEM_COMMIT,PAGE_READWRITE);//Solicite un espacio de POINI tamaño de la estructura en el proceso especificado.

POINT pt;

ListView_GetItemPosition(hDeskTop,1,lpvPt);//Obtiene las coordenadas del primer icono y guárdalas en lpvPt

ReadProcessMemory(hProcess,lpvPt,&pt, sizeof(POINT),NULL

//lpvPt no está en este proceso y no se puede utilizar, por lo que es necesario

Utilice ReadProcessMemory para leerlo del proceso especificado

VirtualFreeEx(hProcess, lpvPt, 0, MEM_RELEASE

Libere el espacio solicitado

CloseHandle(hProcess); );//Cierra el identificador

Finalmente: El pt es la coordenada que deseas, esta es la coordenada del primer icono

ListView_GetItemPosition(hDeskTop,1,lpvPt);

Si quieres cambiarlo por otra cosa, cambia 1. Solo selecciona el que quieras

También tengo un programa para obtener los nombres de todos los iconos del escritorio si quieres. , deje su dirección de correo electrónico