![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Сабж в названии темы=) Как это реализовать?
|
|
#2
|
||||
|
||||
|
Без доп. софта - никак. Пиши сервер.
|
|
#3
|
|||
|
|||
|
зачем доп. софт?
Процесс создаётся через creteprocess а то что создано CreateProcess возваращает мне хендл программы.. как зная хендл программы узнать его видимое на экране окно и изменить заголовок? |
|
#4
|
||||
|
||||
|
Тьфу, *ля. Смотрел тему "** по сети" потом переключился на твою, вот и показалось "Изменить заголовок по сети бла бля бла".
А так помоему есть ф-я API - какому процессу принадлежит окно. Смотри все окна, если найдешь нужное меняй. |
|
#5
|
||||
|
||||
|
если я правильно вас понял...
Код:
procedure TForm1.FormShow(Sender: TObject); var h:HWND; begin h:=FindWindow(nil, 'Form1'); SetWindowText((h),'Delphi World FOREVER!!!'); end; |
|
#6
|
||||
|
||||
|
Код:
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
// получаем его класс
len:=GetClassName(hwnd, @classname, SizeOf(classname));
if len>0 then
// и заголовок меняем на класс
SetWindowText(hwnd, PChar(Copy(classname, 1, len)));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
startupinfoa: _STARTUPINFOA;
processinformation: _PROCESS_INFORMATION;
begin
// инициализируемся
ZeroMemory(@startupinfoa, SizeOf(_STARTUPINFOA));
startupinfoa.cb:=SizeOf(_STARTUPINFOA);
startupinfoa.wShowWindow:=SW_SHOWNORMAL;
// создаем процесс mshearts.exe
CreateProcess(nil, PChar('mshearts.exe'), nil, nil, False, 0, nil, nil, startupinfoa, processinformation);
// ждем максимум 10 сек пока не создадутся окна
WaitForInputIdle(processinformation.hProcess, 10000);
// найдем все окна нашего процесса
EnumThreadWindows(processinformation.dwThreadId, @EnumThreadWndProc, 0);
end; |