findwindow

findwindow

FindWindow這個函式檢索處理頂級視窗的類名和視窗名稱匹配指定的字元串。這個函式不搜尋子視窗。

簡述

lpClassName參數指向類名,lpWindowName指向視窗名,如果有指定的類名和視窗的名字則表示成功返回一個視窗的句柄。否則返回零。

Fin dWindow,

LPCTSTR lpClassName, // pointer to class name

LPCTSTR lpWindowName // pointer to window name

);

HWND hWnd, // handle of window

LPDWORD lpdwProcessId // address of variable for process identifier

);

DWORD dwDesiredAccess, // access flag

BOOL bInheritHandle, // handle inheritance flag

DWORD dwProcessId // process identifier

);

HANDLE hProcess, // handle to process whose memory is written to

LPVOID lpBaseAddress, // address to start writing to

LPVOID lpBuffer, // pointer to buffer to write data to

DWORD nSize, // number of bytes to write

LPDWORD lpNumberOfBytesWritten // actual number of bytes written

);

const

ResourceOffset: dword = $004219F4;

resource: dword = 3113226621;

ResourceOffset1: dword = $004219F8;

resource1: dword = 1940000000;

ResourceOffset2: dword = $0043FA50;

resource2: dword = 1280185;

ResourceOffset3: dword = $0043FA54;

resource3: dword = 3163064576;

ResourceOffset4: dword = $0043FA58;

resource4: dword = 2298478592;

var

hw: HWND;

pid: dword;

h: THandle;

tt: Cardinal;

begin

hw := FindWindow('XX', nil);

if hw = 0 then

Exit;

GetWindowThreadProcessId(hw, @pid);

h := OpenProcess(PROCESS_ALL_ACCESS, false, pid);

if h = 0 then

Exit;

if flatcheckbox1.Checked=true then

begin

WriteProcessMemory(h, Pointer(ResourceOffset), @Resource, sizeof(Resource), tt);

WriteProcessMemory(h, Pointer(ResourceOffset1), @Resource1, sizeof(Resource1), tt);

end;

if flatcheckbox2.Checked=true then

begin

WriteProcessMemory(h, Pointer(ResourceOffset2), @Resource2, sizeof(Resource2), tt);

WriteProcessMemory(h, Pointer(ResourceOffset3), @Resource3, sizeof(Resource3), tt);

WriteProcessMemory(h, Pointer(ResourceOffset4), @Resource4, sizeof(Resource4), tt);

end;

MessageBeep(0);

CloseHandle(h);

close

函式原型

HWND FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName);

參數表

lpClassName

指向一個以NULL字元結尾的、用來指定類名的字元串或一個可以確定類名字元串的原子。如果這個參數是一個原子,那么它必須是一個在調用此函式前已經通過 GlobalAddAtom函式創建好的全局原子。這個原子(一個16bit的值),必須被放置在lpClassName的低位位元組中,lpClassName的高位位元組置零。

如果該參數為null時,將會尋找任何與lpWindowName參數匹配的視窗。

lpWindowName

指向一個以NULL字元結尾的、用來指定視窗名(即視窗標題)的字元串。如果此參數為NULL,則匹配所有視窗名。

返回值

如果函式執行成功,則返回值是擁有指定視窗類名或視窗名的視窗的句柄。

如果函式執行失敗,則返回值為 NULL 。可以通過調用 GetLastError函式獲得更加詳細的錯誤信息。

C#中

導入庫:user32.lib

頭檔案:winuser.h

***.Net 中運用

命名空間 using System.Runtime.InteropServices;

導入庫 [DllImport("user32.dll")]

函式原型 public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

參數說明 lpClassName String,指向包含了視窗類名的空中止(C語言)字串的指針;或設為零,表示接收任何類

lpWindowName String,指向包含了視窗文本(或標籤)的空中止(C語言)字串的指針;或設為零,表示接收 任何視窗標題

返回值 :句柄

C++中

頭檔案:afxwin.h

例子:

聲明

VB6.0中的聲明:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

FINDWINDOWS Delphi簡單例子:

var

t:thandle;

begin

t:=findwindow(nil,'計算器'); //運行windows計算器,獲取計算器的句柄

showmessage(inttostr(t));

end;

易語言中的聲明:

.版本 2

.DLL命令 FindWindow, 整數型, "user32.dll", "FindWindowA"

.參數 類名, 文本型

.參數 標題, 文本型

相關詞條

相關搜尋

熱門詞條

聯絡我們