Pytanie : ShellExecute SW_HIDE

Kiedy using ShellExecute SW_HIDE, dlaczego ty dostawać the rękojeść UN-chować the zastosowanie using ShowWindow?

Odpowiedź : ShellExecute SW_HIDE

The classname dla notepad być notepad.exe…
, Tutaj być, ty można zainteresowany wewnątrz. Peter ratunek the ratunek znowu…


(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:
jednostka Unit1;

interfejs

uses
  Windows, Wiadomość, SysUtils, Wariant, Klasa, Grafika, Kontrola, Forma,
  Dialog, StdCtrls, ShellAPI, TlHelp32;

typ
  TForm1 = klasa (TForm)
    Button1: TButton;
    procedura Button1Click (Nadawca: TObject);
  intymny
    {Intymny deklaracja}
  społeczeństwo
    {Jawny deklaracja}
  końcówka;

var
  Form1: TForm1;

urzeczywistnienie

{$R *.dfm}

typ
  TEnumData = rejestr
    hW: HWND;
    pID: DWORD;
  końcówka;

funkcja EnumProc (hw: HWND; var dane: TEnumData): Bool; stdcall;
var
  pID: DWORD;
zaczynać
  Rezultat: = Prawdziwy;
  jeżeli (GetWindowLong (hw, GWL_HWNDPARENT) = (0)) i
     (IsWindowVisible (hw) lub IsIconic (hw)) wtedy
  zaczynać
    GetWindowThreadProcessID (hw, @pID);
    Jeżeli pID = data.pID wtedy
    zaczynać
      data.hW: = hW;
      Rezultat: = Fałszywy;
    końcówka; {Jeżeli}
  końcówka; {Jeżeli}
końcówka; {EnumProc}

funkcja WindowFromProcessID (pID: DWORD): HWND;
var
  dane: TEnumData;
zaczynać
  data.pID: = pID;
  data.hW: = (0);
  EnumWindows (@EnumProc, longint (@data));
  Rezultat: = data.hW;
końcówka; {WindowFromProcessID}

funkcja WindowFromAppname32 (appname: Sznurek): HWND;
  {Brać tylko the podaniowy filename, pełny ścieżka!
    Potrzeba the rozszerzenie także. }
var
  zdjęcie: THandle;
  processEntry: TProcessEntry32;
zaczynać
  Rezultat: = (0);
  appName: = UpperCase (appname);
  zdjęcie: = CreateToolhelp32Snapshot (
                TH32CS_SNAPPROCESS,
                (0));
  jeżeli zdjęcie <> (0) wtedy
  próba
    processEntry.dwSize: = Sizeof (processEntry);
    jeżeli Process32First (zdjęcie, processEntry) wtedy
    powtórka
      jeżeli AnsiCompareText (
           appname,
           ExtractFilename (StrPas (processEntry.szExeFile))
           ) = (0)
      wtedy
      zaczynać
        Rezultat: = WindowFromProcessID (processEntry.th32ProcessID);
        Przerwa;
      końcówka; {Jeżeli}
    do nie Process32Next (zdjęcie, processEntry);
  w końcu
    CloseHandle (zdjęcie);
  końcówka; {próba}
końcówka; {WindowFromAppname32}

procedura TForm1.Button1Click (Nadawca: TObject);
var
  x: THandle;
zaczynać
  ShellExecute ((0), "otwierać", "c:\WINDOWS\notepad.exe", '', '', SW_SHOW);
  x: = WindowFromAppname32 ("NotePad.exe ");
  ShowMessage (IntToStr (x));
końcówka;

końcówka.
Inne rozwiązania  
 
programming4us programming4us