Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2019, 20:45   #11
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

я нашла вот это :
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    StringEdit: TEdit;
    btnSend: TButton;
    procedure btnSendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
const
  CMD_SETLABELTEXT = 1; //Задаем ID команды

implementation

{$R *.dfm}



procedure TForm1.btnSendClick(Sender: TObject);
var
  CDS: TCopyDataStruct;
begin
  //Устанавливаем тип команды
  CDS.dwData := CMD_SETLABELTEXT;
  //Устанавливаем длину передаваемых данных
  CDS.cbData := Length(StringEdit.Text) + 1;
  //Выделяем память буфера для передачи данных
  GetMem(CDS.lpData, CDS.cbData);
  try
    //Копируем данные в буфер
    StrPCopy(CDS.lpData, AnsiString(StringEdit.Text));
    //Отсылаем сообщение в окно с заголовком StringReceiver
    SendMessage(FindWindow(nil, 'StringReceiver'),
                  WM_COPYDATA, Handle, Integer(@CDS));
  finally
    //Высвобождаем буфер
    FreeMem(CDS.lpData, CDS.cbData);
  end;
end;

end.
но он не работает пример взят отсюда
http://pro.dtn.ru/delphi-net/1-obmen.html

Последний раз редактировалось linda88; 23.01.2019 в 20:47.
linda88 вне форума Ответить с цитированием
Старый 23.01.2019, 20:50   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

1. Это установка, а не чтение. SET и вся логика прям об этом кричит.
2. Вы ни описание не прочли, ни про используемые функции. ни даже комменты... У вас же окно не StringReceiver называется?
p51x вне форума Ответить с цитированием
Старый 23.01.2019, 21:12   #13
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

Нет. Форма multi-device application у меня ругается на вот эту строку:
CDS: TCopyDataStruct;
и на библиотеку:
StdCtrls

Последний раз редактировалось linda88; 23.01.2019 в 21:21.
linda88 вне форума Ответить с цитированием
Старый 24.01.2019, 02:35   #14
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,896
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А сообщения оно умеет обрабатывать раз в винде крутится?
А это смотря какие сообщения обрабатывает стандартное приложение написанное на любом ЯП.
А при чём тут IPC?
northener вне форума Ответить с цитированием
Старый 24.01.2019, 10:27   #15
JoLan
Delphi XE7
Пользователь
 
Аватар для JoLan
 
Регистрация: 26.07.2010
Сообщений: 74
По умолчанию

Цитата:
Сообщение от linda88 Посмотреть сообщение
Нет. Форма multi-device application у меня ругается на вот эту строку:
CDS: TCopyDataStruct;
и на библиотеку:
StdCtrls
Библиотека FireMonkey нативно не поддерживает оконные сообщения. Необходимо переопределить создание формы:
Код:
var
  //...
  OldWndProc : LONG_PTR;
  FHwnd: HWND;

//...

function MyWndProc(Hwnd: HWND; Msg: UINT; MWParam : WPARAM; MLParam : LPARAM) : LRESULT; stdcall;
begin
  //any_code
  Result := CallWindowProc(Ptr(OldWndProc), Hwnd, Msg, MWParam, MLParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FHwnd := FmxHandleToHwnd(Handle);
  OldWndProc := GetWindowLongPtr(FHwnd, GWL_WNDPROC);
  SetWindowLongPtr(FHwnd, GWL_WNDPROC, LONG_PTR(@MyWndProc));
end;
JoLan вне форума Ответить с цитированием
Старый 24.01.2019, 11:13   #16
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А при чём тут IPC?
https://en.wikipedia.org/wiki/Inter-..._communication

Цитата:
Message queue A data stream similar to a socket, but which usually preserves message boundaries. Typically implemented by the operating system, they allow multiple processes to read and write to the message queue without being directly connected to each other. Most operating systems
p51x вне форума Ответить с цитированием
Старый 24.01.2019, 13:10   #17
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

Уменя в коде было:
Код:
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit,
  FMX.Controls.Presentation, FMX.StdCtrls,ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  CDS: TCopyDataStruct;
implementation
заменила вот что вышло:
Код:
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit,
  FMX.Controls.Presentation, FMX.StdCtrls,ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 OldWndProc : LONG_PTR;
  FHwnd: HWND;
implementation
теперь ругается на:
Код:
OldWndProc : LONG_PTR;
 FHwnd: HWND;
linda88 вне форума Ответить с цитированием
Старый 24.01.2019, 16:41   #18
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

Вот весь код который сейчас работает:
Код:
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,ShellAPI,
  FMX.Edit, FMX.Controls.Presentation, FMX.StdCtrls,ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(1, nil, PChar(Edit1.Text), nil, nil, 0)
end;

end.

Последний раз редактировалось linda88; 24.01.2019 в 16:52.
linda88 вне форума Ответить с цитированием
Старый 24.01.2019, 17:06   #19
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

Но только не получается реализовать вот это

Я написала несколько отдельных программ в RAD Studio 10.1 Berlin. Одну программу в виде меню которая запускает эти программы. Необходимо идентифицировать эти программы как программы написанные мной. Проверка посходит путем считывания label если он соответствует ожиданиям, то программа-меню записывает в label другой текст и форма на которой находится label считывает его и если все верно показывает компоненты которые содержит. Программа-меню свое свойство visible:=false; Как только программа которая была вызвана исчезает из памяти свойство программа-меню visible:=true
linda88 вне форума Ответить с цитированием
Старый 25.01.2019, 02:17   #20
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,896
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Message queue A data stream similar to a socket, but which usually preserves message boundaries. Typically implemented by the operating system, they allow multiple processes to read and write to the message queue without being directly connected to each other.
Ну и при чём тут эта цитата?
Вот тут ТС упомянула WM_COPYDATA. Он(а) попробовал, но не получилось.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как открыть .exe файл Hac Общие вопросы C/C++ 1 22.10.2018 19:51
с++ как открыть exe файл в программе ? proef Помощь студентам 2 10.11.2013 01:35
как открыть exe файл в Builder C++ для его изменения C-Jay C++ Builder 3 05.05.2010 21:51
Как открыть файл .exe применяя гиперссылку segail Microsoft Office Excel 4 15.06.2009 23:55