int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HMODULE hMod = LoadLibrary(
"shlwapi.dll"
);
if
(hMod != NULL)
{
HANDLE (__stdcall* lpSHAllocShared)(LPCVOID lpData, DWORD dwSize, DWORD dwProcessId) = \
(HANDLE (__stdcall *)(LPCVOID , DWORD, DWORD))GetProcAddress(hMod, (LPCSTR)7);
BOOL (__stdcall* lpSHFreeShared)(HANDLE hData, DWORD dwProcessId) = \
(BOOL (__stdcall*)(HANDLE, DWORD))GetProcAddress(hMod, (LPCSTR)10);
LPVOID (__stdcall* lpSHLockShared)(HANDLE hData, DWORD dwProcessId) = \
(LPVOID (__stdcall*)(HANDLE, DWORD))GetProcAddress(hMod, (LPCSTR)8);
BOOL (__stdcall* lpSHUnlockShared)(LPVOID lpData) = \
(BOOL (__stdcall*)(LPVOID))GetProcAddress(hMod, (LPCSTR)9);
HWND hWnd = GetShellWindow();
DWORD dwPid = 0;
GetWindowThreadProcessId(hWnd, &dwPid);
if
(AllowSetForegroundWindow(dwPid))
{
LPCWSTR lpUrl = L
"http://www.google.com"
;
const DWORD dwUrl = (lstrlenW(lpUrl) + 1) * sizeof(WCHAR);
const DWORD dwSize = dwUrl + 0x44;
HANDLE hl = lpSHAllocShared(NULL, dwSize, dwPid);
if
(hl != NULL)
{
DWORD* p = (DWORD*)lpSHLockShared(hl, dwPid);
p[0] = dwSize;
p[1] = 0x02000000;
p[2] = 10;
p[0x10] = 0x44;
memcpy(p + 0x11, lpUrl, dwUrl);
lpSHUnlockShared(p);
if
(!PostMessage(hWnd, 0x40B, 0, (LPARAM)hl))
lpSHFreeShared(hl, dwPid);
}
}
FreeLibrary(hMod);
}
return
0;
}