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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2010, 11:02   #1
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию Как заставить программу показывать значения по нажатию кнопки мыши

Привет всем. У меня проблема - я хочу сделать так, чтобы по нажатию правой кнопки мыши в определённом окне, на Form'е в Label или Edit показывалось соответствующее значение.
Если кто знает процедуру или функцию, пожалуйста, напишите.
xRamzeSx вне форума Ответить с цитированием
Старый 17.02.2010, 11:54   #2
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
Сообщение Процедура

Процедура в каждом из компонентов OnMouseUp:

Код:
Begin
If Button = mbRight then
//Действия программы
end;
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru
zmey31313 вне форума Ответить с цитированием
Старый 17.02.2010, 12:12   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в определённом окне
Ну думается мне самый простой способ достичь этого это указать для всех этих компонентов один и тот же обработчик нажатия мышки, а далее Sender в этом обработчике укажет тебе какой из компонентов его вызвал. т.е.
Код:
 if sender=Edit1 then TEdit(sender).Text:=Чето там;
 if sender=Label1 then TLabe(sender).Text:=Чето там;
 ...
Понятен смысл?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2010, 13:22   #4
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию Пояснение

Я хочу чтобы программа выводила незнакомое мне значение. Как это сделать вообще незнаю
xRamzeSx вне форума Ответить с цитированием
Старый 17.02.2010, 13:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как это сделать вообще незнаю
Ух ты...
Если ты не знаешь что должна тебе выводить программа, то тебе придется написать ИИ
А если тебе случайное число нужно вывести то вот:
TEdit(sender).Text:=IntToStr(random(1000));
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2010, 14:03   #6
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Вот мой код:
Код:
var
  Form2: TForm2;
  WindowName : Integer;
  ProcessId : Integer;
  ThreadId : Integer;
  Buf : PChar;
  HandleWindow : Integer;
  Write : Cardinal;
  WindowTitle:string = '...'; //Название окна
  PokeValue: cardinal= $FFFFFFFF;//Значение
  NumberOfBytes:integer = 4;//Кол-во байт


implementation

{$R *.dfm}

function Find(s: string): hWnd;
var
  Wnd: hWnd;
  buff: array[0..127] of Char;
begin
  Find := 0;
  Wnd := GetWindow(application.Handle, gw_HWndFirst);
  while Wnd <> 0 do
  begin
    if (Wnd <> application.Handle) and
    IsWindowVisible(Wnd) and
    (GetWindow(Wnd, gw_Owner) = 0) and
    (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then
    begin
      GetWindowText(Wnd, buff, sizeof(buff));
      if pos(s, StrPas(buff)) > 0 then
      begin
        Find := Wnd;
        Break;
      end;
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;
end;

//Записать значение из памяти окна
procedure write_value(address:cardinal;byte:byte;value:int64);
begin
WindowName := find(windowtitle);
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
GetMem(buf,1);
buf^ := Chr(value);
WriteProcessMemory(HandleWindow,ptr(Address),buf,byte,write);
FreeMem(buf);
CloseHandle(HandleWindow);
end;

//Читать значение из памяти окна 2
function read_value2(address:cardinal;byte:byte;value:integer):string;
begin
WindowName := find(windowtitle);
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
GetMem(buf,1);
buf^ := Chr(value);
ReadProcessMemory(HandleWindow,ptr(Address),buf,byte,write);
CloseHandle(HandleWindow);
result:=buf;
end;

//Читать значение из памяти процесса
function read_value(Addres:cardinal;ByteType:integer;var

GetValue:int64):boolean;
var
  PID,PH:cardinal;
  rw:cardinal;
  exec:boolean;
  H:HWND;
begin
try
  h:=find(windowtitle);
  exec:=true;
  if h=0 then
    exec:=false;
  getwindowthreadprocessid(h,PID);
  PH:=openprocess(process_all_access,false,PID);
  if PH=0 then
    exec:=false;
  if readprocessmemory(PH,ptr(Addres),@GetValue,ByteType,rw)=false then
    exec:=false;
  closehandle(PH);
  result:=exec;
except

end;
end;

function read_goto_str(ca:cardinal;en:integer;var hend:cardinal):string;
var
s:string;
c:cardinal;
ch:int64;
begin
  c:=ca;
  s:='';
  repeat
    ch:=0;
    read_value(c,1,ch);
    ch:=ch;
    c:=c+1;
    s:=s+chr(ch);
  until ch<>en;
  result:=s;
  hend:=c-1;
end;


function read_str(ca:cardinal;en:integer;var hend:cardinal):string;
var
s:string;
c:cardinal;
ch:int64;
begin
  c:=ca;
  s:='';
  repeat
    ch:=0;
    read_value(c,1,ch);
    ch:=ch;
    c:=c+1;
    if ch<>en then s:=s+chr(ch);
  until ch=en;
  result:=s;
  hend:=c-1;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
res:int64;
begin
res:=0;
begin
res:=0;
read_value($000000,1,res);//Известный мне адрес
Edit1.text:=inttostr(res);
end;

end.
Мне нужна функция или процедура, которая считывая название объекта в Edit1 - например, выдавала бы его значение в Edit2 по нажатию кнопки Button1 - например. Можно сказать его ID.
Или проще по нажатию правой кнопки на объект в окне, так же -> Edit
xRamzeSx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить компонент находящийся в чужом приложении, показывать HINT (подсказку)??? DEXXX Win Api 5 16.02.2009 11:59
Как показать одну форму из другой в С++ по нажатию кнопки anton.metal Общие вопросы .NET 1 21.11.2008 19:38
как вызвать по нажатию кнопки меню настройки клавиатуры, мыши, монитора 1234 Общие вопросы Delphi 2 10.09.2008 16:52
Как заставить компонент TTrackBar обрабатывать события мыши? Никки Общие вопросы Delphi 5 29.08.2008 14:17