powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SendMesssage по-китайски :)
53 сообщений из 53, показаны все 3 страниц
SendMesssage по-китайски :)
    #40122690
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение слушатель delphi 10.3 VCL:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

const
   MY_MESSAGE = WM_USER + 42;

type
  TForm1 = class(TForm)


  procedure MessageReceiver(var msg: TMessage); message MY_MESSAGE;

  private

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MessageReceiver(var msg: TMessage);
var
 txt: PChar;
begin
  //Получение сообщения
  txt := PChar(msg.lParam);
  msg.Result := 1;
  ShowMessage(txt);
end;

end.



Приложение отправитель delphi 10.4 VCL:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var
  h: HWND;
  txt: string;
begin
  txt := '123';
  var winTitle := '1212';
  h:=FindWindow(nil, PWideChar(winTitle));
  if h <> 0
    then caption := 'Нашел ' + winTitle
    else caption := 'НЕТ ' + winTitle;

  SendMessage(h, MY_MESSAGE, 0, DWORD(PChar(txt)));



Если в одном приложении делать, все нормально, если в разных, то на получателе выходят китайские кракозябры

Можно как-т победить?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122701
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что ты хочешь прочитать по данному адресу в адресном пространстве приложения-получателя?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122702
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку: WM_COPYDATA спасает в таких случаях
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122705
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antox,

ну ты даёшь. :)
Отправляешь в другое приложение адрес своей строки, и...?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122715
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57
В догонку: WM_COPYDATA спасает в таких случаях


Не понял, как юзать это? Можно примерчик?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122718
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122719
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
antox,

ну ты даёшь. :)
Отправляешь в другое приложение адрес своей строки, и...?


Надеялся на получение строки :)
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122721
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
Надеялся на получение строки :)
Разные адресные пространства.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122727
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Отправляем:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var
 aCopyData: TCopyDataStruct;
 hTargetWnd: HWND;
begin
 with aCopyData do
 begin
   dwData := 0;
   cbData := StrLen(PChar(edtText.text)) + 1;
   lpData := PChar(edtText.text)
 end;
 // Search window by the window title
// Fenster anhand des Titelzeilentext suchen
//hTargetWnd := FindWindowEx(0, 0, nil, PChar('WM_COPYDATA-Receiver'));
hTargetWnd := FindWindowEx(0, 0, nil, PChar('1212'));
 if hTargetWnd <> 0 then
   SendMessage(hTargetWnd, WM_COPYDATA, Longint(Handle), Longint(@aCopyData))
 else
   ShowMessage('No Recipient found!');




Получаем:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
type
  TForm1 = class(TForm)
    lbl1: TLabel;

  procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;

  procedure MessageReceiver(var msg: TMessage); message MY_MESSAGE;

  private

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMCopyData(var Msg: TWMCopyData);
var
 sText: array[0..99] of Char;
begin
   // generate text from parameter
  // anzuzeigenden Text aus den Parametern generieren
  StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
   // write received text
  // Empfangenen Text ausgeben
  lbl1.Caption := sText;
end;



Результат нестабильный :) То кусок строки получит, то крокозябры, то цифру вместо нескольких букв
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122728
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно какое-то гарантированное средство передать строку из одного приложения в другое :)
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122729
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример небось не юникодный.
Явно длина строки при передаче режется.
Адаптируй.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122732
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antox
Нужно какое-то гарантированное средство передать строку из одного приложения в другое :)

Что ты мучаешься, COM используй.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122738
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
// для передачи строки между программами
function GlobalNewString(const Text: string): NativeInt;
var l: Integer;
    p: pointer;
begin
    l := Length(Text)*SizeOfChar;
    if L > SizeOfChar then begin
        Result := GlobalAlloc(GHND, l+SizeOfChar);
        if LongBool(Result) then begin
            {$HINTS OFF}
            p := GlobalLock(Result);
            {$HINTS ON}
            Move(Pointer(Text)^, Pointer(p)^, l);
            GlobalUnlock(Result);
        end
    end else
        Result := 0;
end;

// для передачи строки между программами
function GlobalFreeString(var P: NativeInt): String;
var ps: pointer;
begin
    if LongBool(P) then begin
        {$HINTS OFF}
        ps := GlobalLock(P);
        {$HINTS ON}
        SetLength(Result, Length(PChar(ps)));
        Move(Pointer(ps)^, Pointer(Result)^, Length(Result)*SizeOfChar);
        GlobalUnlock(P);
        P := GlobalFree(P);
    end;
end;
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122745
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
// для передачи строки между программами
function GlobalFreeString(var P: NativeInt): String;
var ps: pointer;
begin
    if LongBool(P) then begin
        {$HINTS OFF}
        ps := GlobalLock(P);
        {$HINTS ON}
        SetLength(Result, Length(PChar(ps)));
        Move(Pointer(ps)^, Pointer(Result)^, Length(Result)*SizeOfChar);
        GlobalUnlock(P);
        P := GlobalFree(P);
    end;
end;



А GlobalFreeString делается на стороне приложения-получателя или в исходном?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122752
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это жесть в голове...

Рекомендую подтянуть матчасть:
https://www.gunsmoker.ru/2011/04/windows.html
https://www.transl-gunsmoker.ru/2009/09/pchars.html
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122759
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Softologic
А GlobalFreeString делается на стороне приложения-получателя или в исходном?


Судя по ЭТОМУ ТОПИКУ на стороне получателя
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122760
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
antox
Нужно какое-то гарантированное средство передать строку из одного приложения в другое :)

Что ты мучаешься, COM используй.


Есть подозрение, что это единственный надежный способ, не подкидывать же файл :) Хотя...
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122764
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
Есть подозрение, что это единственный надежный способ, не подкидывать же файл :) Хотя...
всё украдено до нас! ©
начни отсюда: https://docs.microsoft.com/en-us/windows/win32/ipc/interprocess-communications
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122766
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
Код: pascal
1.
cbData := StrLen(PChar(edtText.text)) + 1;

Ёперный театр!
MSDNcbData

Type: DWORD

The size, in bytes, of the data pointed to by the lpData member.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122768
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отправлять только с помощью SendMessage!
Надеюсь понятно почему?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122779
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox


Отправляем:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var
 aCopyData: TCopyDataStruct;
 hTargetWnd: HWND;
begin
 with aCopyData do
 begin
   dwData := 0;
   cbData := StrLen(PChar(edtText.text)) + 1;
   lpData := PChar(edtText.text)
 end;
 // Search window by the window title
// Fenster anhand des Titelzeilentext suchen
//hTargetWnd := FindWindowEx(0, 0, nil, PChar('WM_COPYDATA-Receiver'));
hTargetWnd := FindWindowEx(0, 0, nil, PChar('1212'));
 if hTargetWnd <> 0 then
   SendMessage(hTargetWnd, WM_COPYDATA, Longint(Handle), Longint(@aCopyData))
 else
   ShowMessage('No Recipient found!');




Получаем:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
type
  TForm1 = class(TForm)
    lbl1: TLabel;

  procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;

  procedure MessageReceiver(var msg: TMessage); message MY_MESSAGE;

  private

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMCopyData(var Msg: TWMCopyData);
var
 sText: array[0..99] of Char;
begin
   // generate text from parameter
  // anzuzeigenden Text aus den Parametern generieren
  StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
   // write received text
  // Empfangenen Text ausgeben
  lbl1.Caption := sText;
end;



Результат нестабильный :) То кусок строки получит, то крокозябры, то цифру вместо нескольких букв


Разобрался, неверно считал длину данных :)

При отправке вместо

Код: pascal
1.
cbData := StrLen(PChar(edtText.text)) + 1;



надо

Код: pascal
1.
cbData := (Length(edtText.text) + 1) * Sizeof(Char);



Теперь надо между VCL в FMX попробовать
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122780
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если 10.3 то не надо заморачиваться со строками, гоняем байты, конвертируем в нужные строки..
Можно прям из стринга в стринг копировать, если лень лишние байты выделять
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
procedure TForm2.Button1Click(Sender: TObject);
var
  CopyDataStruct: TCopyDataStruct;
  s: string;
  Bytes: TBytes;
begin
  CopyDataStruct := Default(TCopyDataStruct);
  s := 'Привет Мама. Я ел раков.';
  CopyDataStruct.dwData := 1;
  Bytes := TEncoding.Unicode.GetBytes(s);
  CopyDataStruct.cbData := Length(Bytes);
  CopyDataStruct.lpData := @Bytes[0];
  SendMessage(RemoteHandle, WM_COPYDATA, Handle, LPARAM(@CopyDataStruct))
end;

procedure TForm2.WMCopyData(var aMessage: TWMCopyData);
var
  Bytes: TBytes;
begin
  SetLength(Bytes, aMessage.CopyDataStruct^.cbData);
  Move(aMessage.CopyDataStruct^.lpData^, Bytes[0], Length(Bytes));
  ShowMessage(TEncoding.Unicode.GetString(Bytes));
end;
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122781
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Softologic
wadman
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
// для передачи строки между программами
function GlobalFreeString(var P: NativeInt): String;
var ps: pointer;
begin
    if LongBool(P) then begin
        {$HINTS OFF}
        ps := GlobalLock(P);
        {$HINTS ON}
        SetLength(Result, Length(PChar(ps)));
        Move(Pointer(ps)^, Pointer(Result)^, Length(Result)*SizeOfChar);
        GlobalUnlock(P);
        P := GlobalFree(P);
    end;
end;




А GlobalFreeString делается на стороне приложения-получателя или в исходном?

Не имеет значения.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122784
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из строки в строку можно так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
procedure TForm2.Button1Click(Sender: TObject);
var
  CopyDataStruct: TCopyDataStruct;
  s: string;
begin
  CopyDataStruct := Default(TCopyDataStruct);
  s := 'Привет Мама. Я ел раков.';
  CopyDataStruct.dwData := 1;
  CopyDataStruct.cbData := Length(s) * StringElementSize(s);
  CopyDataStruct.lpData := PChar(s);
  SendMessage(RemoteHandle, WM_COPYDATA, Handle, LPARAM(@CopyDataStruct))
end;

procedure TForm2.WMCopyData(var aMessage: TWMCopyData);
var
  s: string;
begin
  SetLength(s, aMessage.CopyDataStruct^.cbData div StringElementSize(s));
  Move(aMessage.CopyDataStruct^.lpData^, PChar(s)^, aMessage.CopyDataStruct^.cbData);
  ShowMessage(s);
end;
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122786
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,

StringElementSize(s);

Экая хрень....
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122791
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
X-Cite,

StringElementSize(s);

Экая хрень....
а доктор Ватсон без трубки уже не может... ©
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122798
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
Теперь надо между VCL в FMX попробовать


FMX не ловит сообщения :(
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122800
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
antox
Теперь надо между VCL в FMX попробовать


FMX не ловит сообщения :(
Вгде?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122801
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57
antox
пропущено...


FMX не ловит сообщения :(
Вгде?
на ведре, вестимо
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122805
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нафиг вообще этот набор костылей нужен?
Если приложение кроссплатформенное, то какие могут быть сообщения?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122808
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Barmaley57
пропущено...
Вгде?
на ведре, вестимо


Windows
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122812
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У fmx своя система сообщений System.Messaging.TMessageManager
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122816
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57
У fmx своя система сообщений System.Messaging.TMessageManager


А можно передать с VCL в FMX ?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122821
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю, искаропки нельзя. Надо напильник доставать. Здесь уже помогут знатные fmx-оводы.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122822
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antox
А можно передать с VCL в FMX ?

https://stackoverflow.com/questions/20109686/fmx-trayicon-message-handling
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122840
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
antox
А можно передать с VCL в FMX ?

https://stackoverflow.com/questions/20109686/fmx-trayicon-message-handling


Как-то же работает TTetheringManager или он по сетевому протоколу? В крайнем случае придется ч-з него делать
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122848
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antox
antox
Теперь надо между VCL в FMX попробовать

antox
Мимопроходящий
пропущено...
на ведре, вестимо


Windows



FMX не ловит сообщения :(

Дык врёшь тогда.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122931
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
antox
пропущено...

пропущено...

FMX не ловит сообщения :(

Дык врёшь тогда.


Не, прост не могу заставить работать :) Heeelp
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122932
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
antox
А можно передать с VCL в FMX ?

https://stackoverflow.com/questions/20109686/fmx-trayicon-message-handling


Пробовал, пока не получилось. Может просто запутался. Буду ещё пробовать. Может вообще добавить одну vcl форму в приложение на FMX? :)
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122934
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
antox
пропущено...

пропущено...

FMX не ловит сообщения :(

Дык врёшь тогда.


Создал 3 приложения:
1.Отправитель vcl
2.Получатель vcl
3.Поучатель fmx

1->2 работает
1->3 нет

исходники одинаковые
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122937
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox


Пробовал, пока не получилось. Может просто запутался. Буду ещё пробовать. Может вообще добавить одну vcl форму в приложение на FMX? :)


Закинул одну форму vcl в проект fmx - заработало :) Так вообще можно?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40122997
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antox
ъъъъъ
пропущено...

Дык врёшь тогда.


Создал 3 приложения:
1.Отправитель vcl
2.Получатель vcl
3.Поучатель fmx

1->2 работает
1->3 нет

исходники одинаковые

То есть, fmx в Windows без оконных соощений работает? Совсем "ку-ку", что ли.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123074
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
fmx в Windows без оконных соощений работает?

Прикинь, да.

Он изначально кроссплатформенный, а оконные сообщения - это чисто виндовая тема.

Нет, где-то там под ковром есть сообщения, ибо окна FMX-у все-таки надо создавать средствами винды, но не более того.

https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Platform.Win.WindowHandleToPlatform
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123086
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
ъъъъъ
fmx в Windows без оконных соощений работает?

Прикинь, да.

Он изначально кроссплатформенный, а оконные сообщения - это чисто виндовая тема.

...
https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Platform.Win.WindowHandleToPlatform


И как такое может быть, что хэндл окна доступен (по твоей ссылке), а виндовые сообщения - недоступны? Отсекаются на подлёте?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123094
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

Просто не реализованы доступными программисту во фреймворке.

Разве что руками через WinAPI их выковыривать.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123115
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

10 строчками кода - это руками?)
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123154
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

Ну, у кого-то и ногами.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123299
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я прочитал, в fmx ловить мессаги можно только перекрыв WindowProc
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123331
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutal
Насколько я прочитал, в fmx ловить мессаги можно только перекрыв WindowProc

"...а окна windows нам создавать не разрешали, только fmx формочки".
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123332
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кАкая мерзасть...
(обезьяна)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123340
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Насколько я прочитал, в fmx ловить мессаги можно только перекрыв WindowProc

по вашей ссылке https://stackoverflow.com/questions/20109686/fmx-trayicon-message-handling
три варианта Реми Лебо предлагает:
авторSo, the only way you are going to gain access to the raw messages is to either:

create your own windows, such as with AllocateHWnd(), or CreateWindow/Ex() directly.

hook into FireMonkey's HWND windows directly via Get/SetWindowLong/Ptr(). Since FireMonkey is a cross-platform framework, and HWND windows are a platform-specific implementation detail, I would suggest avoiding this approach.

use thread-specific message hooks via SetWindowsHookEx(). By making them thread-specific, you avoid having to write a DLL to implement the hook.Второй вариант, если я правильно понял - как раз перекрыть WindowProc.

Кстати текстовые сообщения между приложениями можно еще по TCP-IP или UDP передавать через сокеты.
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123365
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
Fr0sT-Brutal
Насколько я прочитал, в fmx ловить мессаги можно только перекрыв WindowProc

"...а окна windows нам создавать не разрешали, только fmx формочки".

А формочки что, в ваккуме висят? Или прямо на десктопе рисуются?
...
Рейтинг: 0 / 0
SendMesssage по-китайски :)
    #40123366
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutal,

и не говори.
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SendMesssage по-китайски :)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]