Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Потоки с переменной

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 25.01.2011, 23:05   #1
 Разведчик
Аватар для zaparca
 
zaparca на правильном пути
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
 
По умолчанию Потоки с переменной

Создаю поток
Код:
type
  TUnfThread = class(TThread)
  private
    UTheWindow:PChar;
    UBut6Cap:string;
    { Private declarations }
  protected
    procedure Execute; override;
  public
    constructor Create(TheWindow:PChar;But6Cap:string);

  end;

implementation

{ TUnfThread }
constructor TUnfThread.Create(TheWindow:PChar;But6Cap:string);
begin
  UTheWindow := TheWindow;
  UBut6Cap:= But6Cap;
  inherited Create(False);
end;


procedure TUnfThread.Execute;
var
buf:byte;
PID,hProcess,BytesCount:DWORD;
const
 UnfrFlag = $009C1984;
begin
 GetWindowThreadProcessId(UTheWindow, @PID);
 hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  if hProcess <> 0 then
   begin
    ReadProcessMemory(hProcess, ptr(UnfrFlag), @buf, sizeof(buf), BytesCount);
     repeat
      buf:=$1;
      writeprocessmemory(hProcess,ptr(UnfrFlag),@buf,1,BytesCount)
     until UBut6Cap = 'Antifrizzzz'
   end;
end;
end.
программа
Код:
procedure TForm1.Button6Click(Sender: TObject);

begin //Atifrezzz
   if Button6.Caption = 'Frizzzz' then
     begin
      Button6.Caption := 'Antifrizzzz';
      But6Cap:= Button6.Caption;
      Exit;
     end;
     Button6.Caption:= 'Frizzzz';
     But6Cap:= Button6.Caption;
     TUnfThread.Create(TheWindow;But6Cap); // передаю переменную в поток 
end;
end.
дальше такая бяка

Цитата:
[Error] ufththread.pas(40): There is no overloaded version of 'GetWindowThreadProcessId' that can be called with these arguments
[Fatal Error] Unit1.pas(7): Could not compile used unit 'ufththread.pas'



что не так подскажите
  Ответить с цитированием
Старый 26.01.2011, 14:52   #2
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Потоки с переменной

DWORD WINAPI GetWindowThreadProcessId(
__in HWND hWnd,
__out_opt LPDWORD lpdwProcessId
);

Неверный аргумент в функции.
Должен быть hWnd (Dword) хендл окна.
У Вас отчегото строка.
  Ответить с цитированием
Старый 28.01.2011, 12:49   #3
 Разведчик
Аватар для zaparca
 
zaparca на правильном пути
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
 
По умолчанию Re: Потоки с переменной

Код:
procedure TForm1.Button6Click(Sender: TObject);

begin //Atifrezzz
   if Button6.Caption = 'Frizzzz' then
     begin
      Button6.Caption := 'Antifrizzzz';
      But6Cap:=(Button6.Caption);
      Exit;
     end;
     Button6.Caption:= 'Frizzzz';
     But6Cap:= Button6.Caption;
     TUnfThread.Create(TheUWin;|But6Cap);
end;
курсор встал тут пишет
[Error] Unit1.pas(142): Not enough actual parameters
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'

может я че не так делаю.
как передать название кнопки в поток чтоб если она Antifrizzzz он завершился?
а если Frizzzz продолжал работать...
  Ответить с цитированием
Старый 28.01.2011, 14:17   #4
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Потоки с переменной

Цитата:
Сообщение от zaparcaПосмотреть сообщение
TUnfThread.Create(TheUWin;|But6Cap);

Насколько я в курсе, потоки в делфи создаются с параметром "RunSuspended", вы изменили конструктор, но вызвали из него стандартный метод, значит должны предоставить булевую переменную "RunSuspended".
  Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 02:45.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net