Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.03.2008, 22:07
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию Получение cтрок через WinAPI

Как через WinAPI получить текстовые данные? Сообщение должно обрабатываться в программе и результат присваиваться сообщению. Типа так:
Код:
//код в основной проге
procedure TКЛАСС_ФОРМЫ.WMMessages(var Msg: TMessage);
begin
  Case Msg.WParam Of
    STRING1QUERY: Msg.Result := НЕКАЯ_ФУНКЦИЯ_КОТОРАЯ_КОНВЕРТИРУЕТ_СТРОКУ_В_Integer(String1);
    STRINGTEST: Msg.Result := ФУНКЦИЯ('Test');
  End;
end;
//и код в управляющей проге
function TPlayerControl.GetString(Msg: Cardinal; wParam: integer; lParam:
  integer; var value: PChar): boolean;
var
  Handle: HWND;
begin
  value := '';
  Handle := FindWindow(PChar('TКЛАСС_ФОРМЫ'), nil);
  if Handle <> 0 then
  begin
    value := ФУНКЦИЯ_КОТОРАЯ_КОНВЕРТИРУЕТ_РЕЗУЛЬТАТ_В_СТРОКУ(SendMessage(Handle, Msg, wParam, lParam));
    Result := Value<>'';
  end
  else
    Result := false;
end;
Кто-нить знает какие функции нужны? Я где-то видел уже не могу найти. Или есть другой способ?
Ответить с цитированием
  #2  
Старый 25.03.2008, 11:38
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Может здесь что-нить полезное будет?
http://www.script-coding.info/AutoHo...ndMessage.html
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #3  
Старый 25.03.2008, 15:55
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от KOOL
Как через WinAPI получить текстовые данные? Сообщение должно обрабатываться в программе и результат присваиваться сообщению. Типа так:
Код:
//код в основной проге
procedure TКЛАСС_ФОРМЫ.WMMessages(var Msg: TMessage);
begin
  Case Msg.WParam Of
    STRING1QUERY: Msg.Result := НЕКАЯ_ФУНКЦИЯ_КОТОРАЯ_КОНВЕРТИРУЕТ_СТРОКУ_В_Integer(String1);
    STRINGTEST: Msg.Result := ФУНКЦИЯ('Test');
  End;
end;
//и код в управляющей проге
function TPlayerControl.GetString(Msg: Cardinal; wParam: integer; lParam:
  integer; var value: PChar): boolean;
var
  Handle: HWND;
begin
  value := '';
  Handle := FindWindow(PChar('TКЛАСС_ФОРМЫ'), nil);
  if Handle <> 0 then
  begin
    value := ФУНКЦИЯ_КОТОРАЯ_КОНВЕРТИРУЕТ_РЕЗУЛЬТАТ_В_СТРОКУ(SendMessage(Handle, Msg, wParam, lParam));
    Result := Value<>'';
  end
  else
    Result := false;
end;
Кто-нить знает какие функции нужны? Я где-то видел уже не могу найти. Или есть другой способ?


А для кого указатели придумали????

Код:
var
 p : PChar;
 i : longint;
begin
 p := GetMemory(200);
 p := 'Hello!';
 i := integer(p);
 ShowMessage(PChar(i));
end;
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #4  
Старый 28.03.2008, 11:57
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

чет не работают указатели... AccessViolation... может я что-то не так делаю?
Код:
//модуль
function TPlayerControl.GetTrackTitle: string;
var
  P: PChar;
  Handle: HWND;
  Integ : integer;
begin
  Result := '';
  P := getmemory(1024);
  Handle := FindWindow(PChar('TPLForm'), nil);
  if Handle <> 0 then
  begin
    integ := SendMessage(Handle, WM_COMMAND, 27211, 0);
    P := PChar(integ);
    Result := P;
  end;
end;
//сама программа
procedure TPLForm.WMMessages(var Msg: TMessage); //message WM_COMMAND
var i : integer;
begin
  Case Msg.WParam Of
    ...
    27211:  begin
              i := integer(GetTag(FFileName));
              Msg.Result := i;
            end;
  End;
end;
Ответить с цитированием
  #5  
Старый 28.03.2008, 14:39
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Может я ошибаюсь
Но PChar - это указатель на адрес памяти где хранятся текстовые данные
и както странно передавать его другой программе.
Есть много способов передачи данных от одной программы к другой.
В данном случае я бы использовал технологию DDE - несколько строк кода и обменивайся текстовыми данными сколько хочешь.
http://www.delphisources.ru/pages/fa.../dde_info.html
(правда там немного запутанно но больше электронного описания пока ненашел)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025