Форум: "WinAPI";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Внизне получается послать сообщение другому приложению. Найти похожие ветки
← →
Duncann (2003-11-04 11:37) [0]У меня есть одна программа сервис под 2000, и другая которая в случае если запущена, то должна принимать сообщения от этой самой программы-сервиса.
Код программы сервиса:
const WM_MSG = WM_USER+2;
...
procedure TsvcServiceBase.ttTimer(Sender:TObject);
var Ini:TiniFile;
Thr:integer;
begin
ini:=TiniFile.Create(ExtractFilePath(ParamStr(0))+"SvComEx22.Dat");
Thr:=ini.ReadInteger("Threads","SendId",0);
if Thr>0 then PostThreadMessage(Thr,WM_MSG,0,0);
ini.Free;
end;
Причем сообщение точно уходят т.к. на if PostThreadMessage() выдает true. А вот код программы принимающей.
Const WM_MSG=WM_USER+2;
...
public procedure GetMessage(var message :TMessage); message WM_MSG;
...
procedure TForm1.GetMessage(var message:TMessage);
begin
ShowMessage("ok");
M.Lines.Add(TimeToStr(Time)+" "+IntToStr(message.WParam)+" "+InTToStr(message.LParam));
end;
Ну и в итоге ничего не выдается... В чем проблема?
← →
Duncann (2003-11-04 11:38) [1]Да и забыл написать процедурку которая пишет в ини файл номер нити.
procedure TForm1.FormActivate(Sender: TObject);
var ini:TIniFile;
begin
Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+"SvComEx22.dat");
ini.WriteInteger("Threads","SendId",GetCurrentThreadId);
Ini.Free;
end;
← →
Игорь Шевченко (2003-11-04 11:42) [2]У сервиса в настройках разрешено взаимодействие с рабочим столом ?
← →
Duncann (2003-11-04 11:53) [3]Да, галочка стоит.
← →
Игорь Шевченко (2003-11-04 13:07) [4]Только что обратил внимание на использование PostThreadMessage.
Это сообщение не будет обработано оконной процедурой формы.
Может, имеет смысл передавать Handle окна формы, а не идентификатор потока ? И в сервисе вызывать PostMessage, а не PostThreadMessage ?
← →
Duncann (2003-11-04 13:39) [5]СПАСИБО!!!!
Это помогло :-)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c