Vraag : ShellExecute SW_HIDE

Wanneer gebruikend ShellExecute SW_HIDE, hoe krijgt u de handvat V.N.-huid de toepassing gebruikend ShowWindow?

Antwoord : ShellExecute SW_HIDE

Classname voor blocnote is geen notepad.exe…
Nochtans, hier is iets u in geinteresseerd zou kunnen zijn. Peter hieronder aan de redding opnieuw…


1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
eenheid Unit1;

interface

gebruik
  Vensters, Berichten, SysUtils, Varianten, Klassen, Grafiek, Controles, Vormen,
  Dialogen, StdCtrls, ShellAPI, TlHelp32;

type
  TForm1 = klasse (TForm)
    Button1: TButton;
    procedure Button1Click (Afzender: TObject);
  privé
    {Privé verklaringen}
  openbaar
    {Openbare verklaringen}
  eind;

var
  Form1: TForm1;

implementatie

{$R *.dfm}

type
  TEnumData = verslag
    hW: HWND;
    pID: DWORD;
  eind;

functie EnumProc (hw: HWND; var gegevens: TEnumData): Bool; stdcall;
var
  pID: DWORD;
begin
  Resultaat: = Waar;
  als (GetWindowLong (hw, GWL_HWNDPARENT) = 0) en
     (IsWindowVisible (hw) of IsIconic (hw)) dan
  begin
    GetWindowThreadProcessID (hw, @pID);
    Als pID = data.pID toen
    begin
      data.hW: = hW;
      Resultaat: = Vals;
    eind; {Als}
  eind; {Als}
eind; {EnumProc}

functie WindowFromProcessID (pID: DWORD): HWND;
var
  gegevens: TEnumData;
begin
  data.pID: = pID;
  data.hW: = 0;
  EnumWindows (@EnumProc, longint (@data));
  Resultaat: = data.hW;
eind; {WindowFromProcessID}

functie WindowFromAppname32 (appname: Koord): HWND;
  {Neem slechts toepassingsfilename, niet volledige weg!
    Behoefte om de uitbreiding eveneens over te gaan. }
var
  momentopname: T-hendel;
  processEntry: TProcessEntry32;
begin
  Resultaat: = 0;
  appName: = In hoofdletters (appname);
  momentopname: = CreateToolhelp32Snapshot (
                TH32CS_SNAPPROCESS,
                0);
  als momentopname <> 0 toen
  probeer
    processEntry.dwSize: = (processEntry) Sizeof;
    als Process32First (processEntry momentopname,) toen
    herhaal
      als AnsiCompareText (
           appname,
           ExtractFilename (StrPas (processEntry.szExeFile))
           ) = 0
      dan
      begin
        Resultaat: = WindowFromProcessID (processEntry.th32ProcessID);
        Onderbreking;
      eind; {Als}
    tot niet Process32Next (processEntry momentopname,);
  tot slot
    CloseHandle (momentopname);
  eind; {poging}
eind; {WindowFromAppname32}

procedure TForm1.Button1Click (Afzender: TObject);
var
  x: T-hendel;
begin
  ShellExecute (0, „open“, „c:\WINDOWS\notepad.exe“, '', '', SW_SHOW);
  x: = WindowFromAppname32 („NotePad.exe“);
  ShowMessage (IntToStr (x));
eind;

eind.
Andere oplossingen  
 
programming4us programming4us