Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2010, 19:14   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Печаль Свернуть програму при запуске через PI.dwProcessId

Привет всем!
Как свернуть программу запускаемую через ShowWindow();
используя ProcessInformation.dwProcessId?

Код:
procedure TForm1.sButton2Click(Sender: TObject);
var
  startupinfoa: _STARTUPINFOA;
  processinformation: _PROCESS_INFORMATION;
begin
  ZeroMemory(@startupinfoa, SizeOf(_STARTUPINFOA));
  startupinfoa.cb:=SizeOf(_STARTUPINFOA);
  CreateProcess(nil, PChar('calc.exe'), nil, nil, False, 0, nil, nil, startupinfoa, processinformation);
  ShowWindow(processinformation.dwThreadId,SW_MINIMIZE);
end;
Человек_Борща вне форума Ответить с цитированием
Старый 22.09.2010, 02:30   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Учите мат-часть.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 22.09.2010, 02:49   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

мдя, показываем поток, свернуть процесс.......дожили.
повторю предыдущий ответ, учите основы Win32-кодинга.

а как домашнее задание, после ShowWindow вашего поставьте ShowMessage(IntToHex(GetLastError() ,1));
и с помощью гугла проанализируйте ответ.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Stilet; 22.09.2010 в 07:50.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.09.2010, 08:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ShowWindow(processinformation.dwThr eadId,SW_MINIMIZE);
Эм...а.а.а... э.э.э... Это что сработает???
Вообще обычно функцией EnumThreadWindows получают список окон конкретного потока, а потом уже с ними работают (вернее с полученными Хендлами)
http://www.programmersforum.ru/showthread.php?t=74962
http://www.programmersforum.ru/showthread.php?p=607230
Ну и в принципе Яндексом по слову EnumThreadWindows
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.09.2010, 11:03   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ценные ответы! Спасибо! Вот что получилось и работает:
Код:
function EnumThreadWndProc(hwnd: THandle; lParam: LPARAM): Boolean; stdcall;
var
  len: Integer;
  classname: array [0..$ff] of Char;
begin
  Result:=True;
  if IsWindowVisible(hwnd) then
  begin
      ShowWindow(hwnd,SW_SHOWMINIMIZED);
  end;
end;

procedure TForm1.sButton2Click(Sender: TObject);
var
  startupinfoa: _STARTUPINFOA;
  processinformation: _PROCESS_INFORMATION;
begin
  ZeroMemory(@startupinfoa, SizeOf(_STARTUPINFOA));
  startupinfoa.cb:=SizeOf(_STARTUPINFOA);
  startupinfoa.dwFlags:=STARTF_USESHOWWINDOW;
  startupinfoa.wShowWindow:=SW_SHOWMINIMIZED;
  CreateProcess(nil, PChar('calc.exe'), nil, nil, False, 0, nil, nil, startupinfoa, processinformation);
  WaitForInputIdle(processinformation.hProcess, 10000);
  EnumThreadWindows(processinformation.dwThreadId, @EnumThreadWndProc, 0);
end;
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при запуске СиСи+ Общие вопросы C/C++ 4 17.06.2010 08:24
Управление свою програму через cmd, program.exe /sillent andreibtzt Общие вопросы Delphi 3 05.05.2009 20:47
Проблема найти путь к винде при запуске программы через удаленный рабочий стол grenles Общие вопросы Delphi 4 12.04.2009 23:29
Можно ли в Pascal написать програму которая при запуске вырубит комп, если да то как? Scroll Паскаль, Turbo Pascal, PascalABC.NET 8 15.03.2008 20:16
как запустить програму при перетаскивание на неё файла SeRhy Общие вопросы Delphi 3 09.01.2008 23:12