Frage : ShellExecute SW_HIDE

Wann using ShellExecute SW_HIDE, wie erhalten Sie den Handgriff UNO-verstecken die Anwendung using ShowWindow?

Antwort : ShellExecute SW_HIDE

Das classname für Notizblock ist nicht notepad.exe…
Jedoch ist hier etwas, das Sie interessiert innen sein konnten. Peter unten zur Rettung wieder…


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:
6:
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:
Maßeinheit Unit1;

Schnittstelle

Gebrauch
  Windows, Mitteilungen, SysUtils, Varianten, Kategorien, Grafiken, Kontrollen, Formen,
  Dialoge, StdCtrls, ShellAPI, TlHelp32;

Art
  TForm1 = Kategorie (TForm)
    Button1: TButton;
    Verfahren Button1Click (Absender: TObject);
  privat
    {Private Erklärungen}
  Öffentlichkeit
    {Allgemeine Erklärungen}
  Ende;

var
  Form1: TForm1;

Implementierung

{$R *.dfm}

Art
  TEnumData = Aufzeichnung
    hW: HWND;
    pID: DWORD;
  Ende;

Funktion EnumProc (hw: HWND; var-Daten: TEnumData): Bool; stdcall;
var
  pID: DWORD;
anfangen
  Resultat: = ausrichten;
  wenn (GetWindowLong (hw, GWL_HWNDPARENT) = 0) und
     (IsWindowVisible (hw) oder IsIconic (hw)) dann
  anfangen
    GetWindowThreadProcessID (hw, @pID);
    Wenn pID = data.pID dann
    anfangen
      data.hW: = hW;
      Resultat: = falsch;
    Ende; {Wenn}
  Ende; {Wenn}
Ende; {EnumProc}

Funktion WindowFromProcessID (pID: DWORD): HWND;
var
  Daten: TEnumData;
anfangen
  data.pID: = pID;
  data.hW: = 0;
  EnumWindows (@EnumProc, longint (@data));
  Resultat: = data.hW;
Ende; {WindowFromProcessID}

Funktion WindowFromAppname32 (appname: Schnur): HWND;
  {Nehmen nur der Anwendungsdateiname, nicht voller Weg!
    Notwendigkeit, die Verlängerung außerdem zu führen. }
var
  Schnappschuß: Quergriff;
  processEntry: TProcessEntry32;
anfangen
  Resultat: = 0;
  appName: = Versalien (appname);
  Schnappschuß: = CreateToolhelp32Snapshot (
                TH32CS_SNAPPROCESS,
                0);
  wenn Schnappschuß <> 0 dann
  Versuch
    processEntry.dwSize: = Sizeof (processEntry);
    wenn Process32First (Schnappschuß, processEntry) dann
    Wiederholung
      wenn AnsiCompareText (
           appname,
           ExtractFilename (StrPas (processEntry.szExeFile))
           ) = 0
      dann
      anfangen
        Resultat: = WindowFromProcessID (processEntry.th32ProcessID);
        Bruch;
      Ende; {Wenn}
    bis nicht Process32Next (Schnappschuß, processEntry);
  schließlich
    CloseHandle (Schnappschuß);
  Ende; {Versuch}
Ende; {WindowFromAppname32}

Verfahren TForm1.Button1Click (Absender: TObject);
var
  x: Quergriff;
anfangen
  ShellExecute (0, „öffnen sich“, „c:\WINDOWS\notepad.exe“, '', '', SW_SHOW);
  x: = WindowFromAppname32 („NotePad.exe ");
  ShowMessage (IntToStr (x));
Ende;

Ende.
Weitere Lösungen  
 
programming4us programming4us