Получить дескриптор главного окна оболочки

Советы » Windows » Получить дескриптор главного окна оболочки

  At times, it is necessary to get a handle (HWND) to the shell's main window. 
  MSDN offers us next method: 

   hwndShell := FindWindow('Progman', nil); 

  It seems to be a simple code but I've found much better solution. 
  The User32.dll has one more useful and of course 
  undocumented function - GetShellWindow! 

 // This example will show you how you can obtain a handle to the 
// Windows Shell window without calling the FindWindow function. 
// Translated from C to Delphi by Thomas Stutz 
// Original Code: 
// (c)1999 Ashot Oganesyan K, SmartLine, Inc 
// mailto:ashot@aha.ru, http://www.protect-me.com, http://www.codepile.com 

// This function returns a handle to the Windows Shell window 

ShellWindow: HWND; type

TGetShellWindow = function

(): HWND; stdcall

; var

hUser32: THandle; GetShellWindow: TGetShellWindow; begin

Result := 0; hUser32 := GetModuleHandle('user32.dll'); if

(hUser32 > 0) then


@GetShellWindow := GetProcAddress(hUser32, 'GetShellWindow'); if

Assigned(GetShellWindow) then


Result := GetShellWindow; end

; end

; end

; procedure

TForm1.Button1Click(Sender: TObject); var

hShellWindow: Hwnd; strWinText: array

[0..260] of

char; begin

hShellWindow := ShellWindow; if

hShellWindow <> 0 then


GetWindowText(ShellWindow, strWinText, 255); ShowMessage(strWinText); end

; end


Другое по теме:




Copyright © 2023 - All Rights Reserved - www.delphirus.com