![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ShellExecute [D6, WinXP]
md © (2003-11-12 17:42:00)
Добрый день! Вопрос такой - первый параметр функции ShellExecute это указатель на окно, которое запускает другое приложение ShellExecute(Form1.handle, "open", "C:\...", ...);
А что делать если у моей проги нет окна вообще? Как быть с этим handle?
md (2003-11-12 18:20:00) [1]
Странное дело...
удалил строчку в самом начале проги - procedure SendCopyDatа...
и всё заработало.
md (2003-11-12 18:15:00) [2]
to turonix
WinExec тоже, почему-то, нехочет ничего делать
WinExec(PChar("C:\...\file.exe"), SW_SHOWNORMAL);
md (2003-11-12 18:05:00) [3]
to Prov
program CDB;
uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls, ExtCtrls, ShellApi;
type
TCopyDataStruct = packed record
dwData: DWORD;
cbData: DWORD;
lpData: pointer;
end;
procedure SendCopyData(hTargetWnd: HWND; ACopyDataStruct:TCopyDataStruct);
var
MyCopyDataStruct: TCopyDataStruct;
procedure SendCopyData(hTargetWnd: HWND; ACopyDataStruct:TCopyDataStruct);
begin
if hTargetWnd <> 0 then SendMessage(hTargetWnd, WM_COPYDATA, Longint(0), Longint(@ACopyDataStruct))
end;
begin
if FindWindow("CDBase", nil) = 0 then begin
ShellExecute(0, "open", "D:\..., PChar(paramstr(1)), nil, SW_SHOWNORMAL);
end;
if FindWindow("CDBase", nil) <> 0 then begin
with MyCopyDataStruct do
begin
dwData := 0;
cbData := StrLen(PChar(paramstr(1))) + 1;
lpData := PChar(paramstr(1));
end;
hTargetWnd := FindWindow(nil, "CDBase");
SendCopyData(hTargetWnd, MyCopyDataStruct);
end;
end;
end.
Prov (2003-11-12 18:02:00) [4]
не может быть... код приведи ка...
md (2003-11-12 17:59:00) [5]
to Anatoly Podgoretsky
to Prov
попробовал поставить 0 - ошибок не выдаёт, но и задание не выполняет.
md (2003-11-12 17:56:00) [6]
to Turonix
если просто написать handle то получается сообщение "Undeclared identifier: handle". но я попробую с WinExec.
Anatoly Podgoretsky (2003-11-12 17:52:00) [7]
Можно 0
Prov (2003-11-12 17:52:00) [8]
поставь 0... 0 - это хэндл главного окна в системе, тоесть, самого верхнего уровня...
turonix (2003-11-12 17:51:00) [9]
А что так не работает? В Help-е написано, что можно просто написать первым параметром handle <ShellExecute(handle, "open", "C:\...", ...)> может будет работать... А если не получится попробуй функцию WinExec (Ex: WinExec("file.exe", SW_RESTORE);)