![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запускаю CreateProcess ом прогу как скрыть её окошко ? [D6, Win2k]
borya © (2002-12-26 13:29:00)Запускаю CreateProcess"ом прогу как скрыть её окошко
она сама грузит библитеки. и остаётся висеть окошко ака консольное как его спрятать ?
borya (2002-12-27 14:23:00) [1]путаница вышла
там я пояснение хотел написать мол не библиотечкионо окошко
сенкс
borya (2002-12-27 14:02:00) [2]Спасибо
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
Севостьянов Игорь (2002-12-27 13:58:00) [3]
> borya (27.12.02 13:52)
> нет оно подписано С:\...\....\*.exe
Так какая проблема ? В моем примере вместо cmd.exe(приведен для примера) впиши С :\...\....\*.exe
borya (2002-12-27 13:52:00) [4]нет оно подписано С:\...\....\*.exe
Севостьянов Игорь (2002-12-27 13:51:00) [5]Похоже ты кое-что забыл. Попробуй вот это:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
hWindow: HWND;
implementation
{$R *.DFM}
function EnumThreadWndProc(Handle: THandle; lParam: Longint): Boolean; stdcall;
begin
hWindow := Handle;
Result := False;
end;
function ExecAndWait(const FileName, Params: ShortString;
const WinState: Word): Boolean;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: PChar;
R: DWORD;
begin
CmdLine := PChar(Filename + #32 + Params + #32);
FillChar(StartInfo, SizeOf(StartInfo), 0);
with StartInfo do
begin
cb := SizeOf(StartInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
wShowWindow := WinState;
end;
Result := CreateProcess(nil, CmdLine, nil, nil, False,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcInfo);
{
borya (2002-12-27 12:44:00) [6]Да консольная она
код
varsi:STARTUPINFO;
pi:PROCESS_INFORMATION;
Sa,St:pSECURITYATTRIBUTES;
Begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
si.wShowWindow:=SW_HIDE;
New(Sa);New(st);
sa.nLength :=SizeOf(sa);
sa.lpSecurityDescriptor:=nil;
sa.bInheritHandle:=True;st:=sa;
CreateProcess(nil,PChar(exe),Sa,St,True,0,nil,pChar(dir),si,pi);
End;
Севостьянов Игорь (2002-12-27 11:38:00) [7]Кстати запускаемая тобой прога консольная ? Тогда скорее всего неверно CreateProcess юзаешь - для консольных есть некие отличия от неконсольных приложений
Севостьянов Игорь (2002-12-27 11:36:00) [8]Такого быть не может - код в студию... (А может это какая-нить DLL запускает свое окно ?)
borya (2002-12-27 08:37:00) [9]Так ставлю SW_HIDE а ему по барабану, и после запуска ShowWindow тоже не действует
Song (2002-12-26 13:46:00) [10]Предпоследний параметр в CreateProcess(). У него есть полe wShowWindow