![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как скрыть кнопку на панели задач? [D6, Win95/98]
Колбасьев © (2004-09-12 18:36:00)Как скрыть кнопку на панели задач?
И как запустить процесс "невидимым",
ShellExecute(Handle, 'open', 'MyServer.exe', nil, PChar
(ExtractFileDir(Application.ExeName)), SW_HIDE);
не помогает. Выглядит все также как SW_SHOW.
panov (2004-09-13 18:50:00) [1]>Колбасьев © (13.09.04 18:01) [4]
И чего тут сложного?:
//Функция для создания нового процесса
//Параметры:
// aCommand: Строка для выполнения исполняемого файла(полный путь)
// aShow: Показывать/не показывать окно нового процесса
// aWaitExit: Ожидать/не ожидать завершения процесса
function ExecCmd(const aCommand,aParm: String;const aShow, aWaitExit: Boolean): Boolean;
var
pi:PROCESS_INFORMATION;
si:STARTUPINFO;
cmdLine,Path: String;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
si.dwFlags := STARTF_FORCEONFEEDBACK+STARTF_USESHOWWINDOW;
if aShow then si.wShowWindow := SW_SHOWNORMAL else si.wShowWindow := SW_HIDE;
Path := ExtractFilePath(aCommand);
cmdLine := aCommand+' '+aParm;
Result :=
CreateProcess( nil, // No module name (use command line).
PChar(cmdLine), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent's environment block.
PChar(Path), // Use parent's starting directory.
si, // Pointer to STARTUPINFO structure.
pi ); // Pointer to PROCESS_INFORMATION structure.
if Result then
begin
if aWaitExit then WaitForSingleObject( pi.hProcess, infinite );
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
end;
end;
Колбасьев (2004-09-13 18:01:00) [2]Handle я получаю через FindWindow.
CreateProcess меня не устраивает по одной причине - слишком много заполнять для пустякового дела.
QuasiLamo, ANB - спасибо.
ANB (2004-09-12 18:51:00) [3]Вот чтобы получить Application.Handle и придется юзать CreateProcess.
QuasiLamo (2004-09-12 18:43:00) [4]с сайта delphiworld
-----------------------
Все запущенные .exe-файлы обозначаются значком на панели задач. А как же сделать, чтобы он стал невидим?
Нужно просто воспользоваться функцией ShowWindow
ShowWindow(Application.Handle, sw_Hide);
Для восстановления видимости значка:
ShowWindow(Application.Handle, sw_Show);
ANB (2004-09-12 18:38:00) [5]CreateProcess юзай, тока сразу предупреждаю - пример выслать не смогу - это не мой комп. Полазь по хелпу и посмотри исходники.