Страница 1 из 2
Как запустить чужое приложение в фоновом режиме???
Добавлено: 09 фев 2007, 15:40
extreme
Как запустить чужое приложение в фоновом режиме??? т.е. чтобы его небыло видно.
Спасибо....!!!
Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 09 фев 2007, 15:49
Хыиуду
а что подразумевается под фоновым режимом? В свернутом окне? или в виде иконки в правом нижнем углу?

Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 09 фев 2007, 16:50
LAngel
послать ему Sw_hide ?
Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 10 фев 2007, 14:46
Blood_Magic
procedure DeComp(const fn:string);
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrLCopy(zAppName,PChar(fn),Length(fn));
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb:=Sizeof(StartupInfo);
StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow:=0;
If CreateProcess(nil,zAppName,nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo) then while WaitforSingleObject(ProcessInfo.hProcess,200)=WAIT_TIMEOUT do Application.ProcessMessages
end;
Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 10 фев 2007, 18:01
Колядин Максим
Если ты имеешь ввиду Паскаль, и "чтобы программа оставалась в фоновом режиме" у тебя означает в оперативной памяти, тогда для этого есть специальная функция
keep. Вот пример использования функции.
Код: Выделить всё
Uses Crt, Dos;
Var KbdIntVec : Procedure;
{$F+}
Procedure Keyclick;
Interrupt;
Begin
If Port[$60] < $80 Then
Begin
Sound(5000);
Delay(1);
NoSound;
End;
InLine($9C);
KbdIntVec;
End;
{$F-}
Begin
GetIntVec($9, KbdIntVec);
SetIntVec($9, Addr(KeyClick));
Keep(0);
End.
[code]
Взято из Help'a паскаля.
Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 12 фев 2007, 13:45
extreme
Спасибо конечно. Но не работает. Я понимаю так что мне надо передать данной процедуре адрес и имя вызываемой программы.... не работает.
У меня одна программа написана на VC++ а другая на Delphi. Так вот надо из Дельфийской программы вызвать сишную..... но чтобы ее небыло вообще видно.
Blood_Magic писал(а):procedure DeComp(const fn:string);
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrLCopy(zAppName,PChar(fn),Length(fn));
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb:=Sizeof(StartupInfo);
StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow:=0;
If CreateProcess(nil,zAppName,nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo) then while WaitforSingleObject(ProcessInfo.hProcess,200)=WAIT_TIMEOUT do Application.ProcessMessages
end;
Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 12 фев 2007, 13:48
extreme
У меня одна программа написана на VC++ а другая на Delphi. Так вот надо из Дельфийской программы вызвать сишную..... но чтобы ее небыло вообще видно.
т.е. только видна в Диспечере задач.
Sw_hide не работает. А вот минимизация - работает.... но меня это не устраивает....
-----------------------------------
Очень прошу ....... ХЕЛП.......
Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 12 фев 2007, 14:28
Absurd
Не пробовал такое, но можно создать отдельный виртуальный десктоп (CreateWindowStation()), а потом запустить приложение на этом десктопе (lpDesktop в STARTUPINFO)
Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 12 фев 2007, 16:25
Blood_Magic
extreme писал(а):У меня одна программа написана на VC++ а другая на Delphi. Так вот надо из Дельфийской программы вызвать сишную..... но чтобы ее небыло вообще видно.
т.е. только видна в Диспечере задач.
Sw_hide не работает. А вот минимизация - работает.... но меня это не устраивает....
-----------------------------------
Очень прошу ....... ХЕЛП.......
где ты видишь Sw_hide??? у меня работает то, что я тебе написал, там STARTF_USESHOWWINDOW стоит, единственное поэксперементируй с параметром CREATE_NEW_CONSOLE. передать надо имя файла (например 'c:\maf\maf.exe')
Re: Как запустить чужое приложение в фоновом режиме???
Добавлено: 12 фев 2007, 17:12
BBB
extreme писал(а):У меня одна программа написана на VC++ а другая на Delphi. Так вот надо из Дельфийской программы вызвать сишную..... но чтобы ее небыло вообще видно.
А если сделать из то программы, которую надо вызывать DLL, а не EXE-шник? Тогда подлинковываешь в твоей дельфийной программе Си-шную DLL и вызываешь проимпортируемую функцию.