1. 程式人生 > >FindWindow和FindWindowEx的語法和用法

FindWindow和FindWindowEx的語法和用法

1 函式原型:

  HWND FindWindow   (   LPCSTR lpClassName,   LPCSTR lpWindowName    ); 2 引數表:   lpClassName   指向一個以null結尾的、用來指定類名的字串或一個可以確定類名字串的原子。如果這個引數是一個原子,那麼它必須是一個在呼叫此函式前已經通過GlobalAddAtom函式建立好的全域性原子。這個原子(一個16bit的值),必須被放置在lpClassName的低位位元組中,lpClassName的高位位元組置零。   lpWindowName   指向一個以null結尾的、用來指定視窗名(即視窗標題)的字串。如果此引數為NULL,則匹配所有視窗名。 3 返回值:
  如果函式執行成功,則返回值是擁有指定視窗類名或視窗名的視窗的控制代碼。   如果函式執行失敗,則返回值為 NULL 。可以通過呼叫GetLastError函式獲得更加詳細的錯誤資訊。
4 使用方法   //測試1: 試著找找新建程式主視窗的控制代碼 var     h: HWND; begin     {現在我們知道視窗的標題是: Form1、視窗的類名是: TForm1}     h := FindWindow('TForm1', 'Form1');     ShowMessage(IntToStr(h)); {656180; 這是隨機, 每次啟動視窗肯定不一樣}     {假如不知道類名}
    h := FindWindow(nil, 'Form1');     ShowMessage(IntToStr(h)); {656180}     {假如不知道標題名}     h := FindWindow('TForm1', nil);     ShowMessage(IntToStr(h)); {656180}     {其實這個視窗的控制代碼不就是 Self.Handle 嗎}     ShowMessage(IntToStr(Handle)); {656180} end;

//測試2: 找計算器視窗的控制代碼(先開啟計算器)

var

    h: HWND;

begin

{如果不是簡體中文系統, 這樣可能不靈}

    h := FindWindow(nil, '計算器');

    ShowMessage(IntToStr(h)); {1508334}

    {最好這樣, 但你得提前知道計算器視窗的類名是: SciCalc}

    h := FindWindow('SciCalc', nil);

    ShowMessage(IntToStr(h)); {1508334}

end;