Pergunta : ShellExecute SW_HIDE

Quando using ShellExecute SW_HIDE, como você começ o punho un-esconde a aplicação using ShowWindow? class= do

Resposta : ShellExecute SW_HIDE

O classname para o bloco de notas não é notepad.exe…
Entretanto, está aqui algo que você pôde estar interessado dentro. Peter abaixo ao salvamento outra vez…


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:
unidade Unit1;

relação

usos
  Windows, mensagens, SysUtils, variações, classes, gráficos, controles, formulários,
  Diálogos, StdCtrls, ShellAPI, TlHelp32;

tipo
  TForm1 = classe (TForm)
    Button1: TButton;
    procedimento Button1Click (remetente: TObject);
  confidencial
    {Declarações confidenciais}
  público
    {Declarações públicas}
  extremidade;

var
  Form1: TForm1;

execução

{$R *.dfm}

tipo
  TEnumData = registro
    hW: HWND;
    pID: DWORD;
  extremidade;

função EnumProc (hw: HWND; dados do var: TEnumData): Bool; stdcall;
var
  pID: DWORD;
começar
  Resultado: = retificar;
  se (GetWindowLong (hw, GWL_HWNDPARENT) = 0) e
     (IsWindowVisible (hw) ou IsIconic (hw)) então
  começar
    GetWindowThreadProcessID (hw, @pID);
    Se pID = data.pID então
    começar
      data.hW: = hW;
      Resultado: = falso;
    extremidade; {Se}
  extremidade; {Se}
extremidade; {EnumProc}

função WindowFromProcessID (pID: DWORD): HWND;
var
  dados: TEnumData;
começar
  data.pID: = pID;
  data.hW: = 0;
  EnumWindows (@EnumProc, longint (@data));
  Resultado: = data.hW;
extremidade; {WindowFromProcessID}

função WindowFromAppname32 (appname: Corda): HWND;
  {Tomada somente o nome de arquivo da aplicação, trajeto nao cheio!
    Necessidade de passar também a extensão. }
var
  instantâneo: THandle;
  processEntry: TProcessEntry32;
começar
  Resultado: = 0;
  appName: = UpperCase (appname);
  instantâneo: = CreateToolhelp32Snapshot (
                TH32CS_SNAPPROCESS,
                0);
  se instantâneo <> 0 então
  tentativa
    processEntry.dwSize: = Sizeof (processEntry);
    se Process32First (instantâneo, processEntry) então
    repetição
      se AnsiCompareText (
           appname,
           ExtractFilename (StrPas (processEntry.szExeFile))
           ) = 0
      então
      começar
        Resultado: = WindowFromProcessID (processEntry.th32ProcessID);
        Ruptura;
      extremidade; {Se}
    até não Process32Next (instantâneo, processEntry);
  finalmente
    CloseHandle (instantâneo);
  extremidade; {tentativa}
extremidade; {WindowFromAppname32}

procedimento TForm1.Button1Click (remetente: TObject);
var
  x: THandle;
começar
  ShellExecute (0, “abrem”, “c:\WINDOWS\notepad.exe”, '', '', SW_SHOW);
  x: = WindowFromAppname32 (“NotePad.exe ");
  ShowMessage (IntToStr (x));
extremidade;

extremidade.
Outras soluções  
 
programming4us programming4us