Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: stalker, Ekz 
Форум » Все о Delphi » Начинающим » Как винамп передаёт сообщения
Как винамп передаёт сообщения
XakerДата: Среда, 03.03.2010, 17:10 | Сообщение # 1
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
В общем всем привет... wink Опять я со своей проблемой...

В общем есть статья /publ/8-1-0-211 в ней автор передавал String значение...

я попробовал передавать в нём не число а текстовую строку...и мне собственно выдало ошибку...что тип данных не подходящий...так вот вопрос такой..можно ли как нибудь таким же (или иным) способам передать другой программе текстовую строку? (например путь к файлу) и вообще какие есть методы...и какой из них лучший. angel

 
AdminДата: Среда, 03.03.2010, 20:41 | Сообщение # 2
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Данным способом передать строку нельзя.
Посмотри этот пример: http://www.delphisources.ru/pages....es.html


Не оказываю помощь через личные сообщения и ICQ
 
XakerДата: Четверг, 04.03.2010, 16:32 | Сообщение # 3
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
Admin, попробовал способ....ужасно медленный... sad 3-5 секунд уходит на посылку и обработку...
 
ZuByДата: Четверг, 04.03.2010, 22:21 | Сообщение # 4
Ранг 5
Группа: Проверенные
Сообщений: 118
Награды: 2
Репутация: 2
Статус: Offline
конечно можно)
SendMessage(Wnd, WM_SETTEXT, 0, Integer(PChar('string'));
вот так передается строковые сообщения в винамп


http://www.zubymplayer.com
 
XakerДата: Воскресенье, 07.03.2010, 07:52 | Сообщение # 5
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
ZuBy, делаю так...

Code
if ParamCount <> 0 then begin
MyCommand(ParamStr(1));
halt;
Exit;
end

Code
Function MyCommand(Command: String): boolean;
var H:HWND;
begin
   H := FindWindow('TForm1', nil);
   if H <> 0 then
   begin
     SendMessage(H, WM_SETTEXT, 0, Integer(PChar(Command)));
     result := True;
   end
   else
     result := false;
end;

И обработка...

procedure TForm1.WMCommand(var Message: TMessage);
begin
inherited;
IF message.LParam > 0 then
Loader(InttoStr(message.LParam));
end;

И почему то при запуске программы в ParamCount уже есть параметр...из-за чего возникает ошибка дальше по коду..(не тут) подскажите как можно исправить...

 
AdminДата: Воскресенье, 07.03.2010, 11:31 | Сообщение # 6
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Да при запуске уже есть параметр содержащий путь до EXEшки

Не оказываю помощь через личные сообщения и ICQ
 
ZuByДата: Воскресенье, 07.03.2010, 19:21 | Сообщение # 7
Ранг 5
Группа: Проверенные
Сообщений: 118
Награды: 2
Репутация: 2
Статус: Offline
Code
if ParamCount > 0 then begin  
MyCommand(ParamStr(1));  
halt;  
Exit;  
end

получение делается так:
var
buff:array [0.255] of char;
filename: string;
begin
SendMessage(wnd, WM_GETTEXT, 0, length(buff));
filename:= buff;
end;


http://www.zubymplayer.com
 
XakerДата: Вторник, 09.03.2010, 15:15 | Сообщение # 8
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
ZuBy, неувязочка... не работает такой код.

Приём

Code
procedure TForm1.WMCommand(var Message: TMessage);
var  
buff:array [0.255] of char;  
filename: string;  
H: Integer;
begin
H := FindWindow('TForm1', nil);   
SendMessage(H, WM_GETTEXT, 0, length(buff));  
filename:= buff;  
end;  

Отправка

Code
Function MyCommand(Command: String): boolean;  
var H:HWND;  
begin  
    H := FindWindow('TForm1', nil);  
    if H <> 0 then  
    begin  
      SendMessage(H, WM_SETTEXT, 0, Integer(PChar(Command)));  
      result := True;  
    end  
    else  
      result := false;  
end;
 
skycarДата: Вторник, 09.03.2010, 19:30 | Сообщение # 9
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Раз отсылается WM_SETTEXT, то на приём именно этого сообщения надо настраиваться wink

Code

    private
   procedure OnTextRec(var Msg: TWMSetText); message WM_SETTEXT;

Реализация метода
Code

procedure TForm1.OnTextRec(var Msg: TWMSetText);
var Buff, FileName: string;
begin
  inherited;
  Buff:=string(Msg.Text);
  FileName:=Buff;
end;

Всё просто wink
 
XakerДата: Вторник, 09.03.2010, 20:05 | Сообщение # 10
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
skycar, спасибо разобрался)) happy
 
Форум » Все о Delphi » Начинающим » Как винамп передаёт сообщения
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz