Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-49630
Mag
2004-01-04 17:44
2004.01.16
Строки


1-49632
афвуд
2004-01-06 14:29
2004.01.16
Временная папка Windows


14-49679
Nikolay M.
2003-12-26 19:56
2004.01.16
В.В. Путин учит принимать парика :?))))))))))


1-49570
raining day
2004-01-05 21:07
2004.01.16
Не могу нормально записать инфу в реестр


14-49714
[NIKEL]
2003-12-21 17:53
2004.01.16
16 в Армию поеду из Норильска в Красноярск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский