Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.16;
Скачать: CL | DM;

Вниз

ShellExecute   Найти похожие ветки 

 
md   (2003-11-12 17:42) [0]

Добрый день! Вопрос такой - первый параметр функции ShellExecute это указатель на окно, которое запускает другое приложение ShellExecute(Form1.handle, "open", "C:\...", ...);
А что делать если у моей проги нет окна вообще? Как быть с этим handle?


 
turonix   (2003-11-12 17:51) [1]

А что так не работает? В Help-е написано, что можно просто написать первым параметром handle <ShellExecute(handle, "open", "C:\...", ...)> может будет работать... А если не получится попробуй функцию WinExec (Ex: WinExec("file.exe", SW_RESTORE);)


 
Anatoly Podgoretsky ©   (2003-11-12 17:52) [2]

Можно 0


 
Prov ©   (2003-11-12 17:52) [3]

поставь 0... 0 - это хэндл главного окна в системе, тоесть, самого верхнего уровня...


 
md   (2003-11-12 17:56) [4]

to Turonix

если просто написать handle то получается сообщение "Undeclared identifier: handle". но я попробую с WinExec.


 
md   (2003-11-12 17:59) [5]

to Anatoly Podgoretsky
to Prov

попробовал поставить 0 - ошибок не выдаёт, но и задание не выполняет.


 
Prov ©   (2003-11-12 18:02) [6]

не может быть... код приведи ка...


 
md   (2003-11-12 18:05) [7]

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.


 
md   (2003-11-12 18:15) [8]

to turonix

WinExec тоже, почему-то, нехочет ничего делать
WinExec(PChar("C:\...\file.exe"), SW_SHOWNORMAL);


 
md   (2003-11-12 18:20) [9]

Странное дело...
удалил строчку в самом начале проги - procedure SendCopyDatа...
и всё заработало.



Страницы: 1 вся ветка

Текущий архив: 2004.01.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-49528
Kinderr
2004-01-02 15:59
2004.01.16
Global hot key + Win button


3-49400
Анатолий
2003-12-19 16:37
2004.01.16
Как правильно написать: UPDATE в процедуре?


14-49701
Кен
2003-12-26 02:11
2004.01.16
Какую лучше выбрать вэб-камеру для тёмных помещений ? А то на


1-49533
Timer
2004-01-02 13:07
2004.01.16
Delphi и Word


3-49468
Kirill_S
2003-12-17 16:48
2004.01.16
Работа нескольких пользователей с данными