Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Hito on July 14, 2018, 10:33:20 AM
-
???
Объясню ситуацию... Мне нужно, чтобы в нужный момент кликер запомнил хендл активного окна, потом вывел бы на передний план окно, с которым он работает, отвязался бы от него, сделал бы все, что нужно, опять привязался бы к нему, а потом снова вывел бы на передний план то окно, которое было активным изначально.
-
В общем если кому понадобится...
https://yadi.sk/d/LTn2l-J53ZARLk (https://yadi.sk/d/LTn2l-J53ZARLk)
Кидаем все три файла в одну папку.
-
11 мегабайт для поиска активного окна? это на чём такие шедевры?
меня за такое ещё ругали. какой же я устаревший:)
-
11 мегабайт для поиска активного окна? это на чём такие шедевры?
меня за такое ещё ругали. какой же я устаревший:)
На Delphi
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, inifiles, Tlhelp32;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
function KillTask(ExeFileName: string): Integer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
HD:HWND;
Ini: TIniFile;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
HD:= GetForegroundWindow;
Ini := TiniFile.Create(extractfilepath(paramstr(0))+('variables.ini'));
Ini.WriteInteger('ID of active window', 'window', HD);
Ini.WriteInteger('ID of active window', 'action', 1);
Ini.Free;
KillTask('ID_active_window.exe');
end;
function TForm1.KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
end.
-
кликерман написан на делфи. он как-то поменьше даже с картинками и звуками
-
кликерман написан на делфи. он как-то поменьше даже с картинками и звуками
Ну хз... Листинг ты видишь. Там больше ничего нет.
И картинки со звуками у кликермана не в эксешнике же хронятся...?
-
я вспоминал размер архива кликермана, он примерно такой же, как твой модуль, упакованный в rar, и несравним по функционалу. не, ты молодец, сам разобрался и написал, но надо оптимизировать как-то
я вообще 20+ лет не писал на норм языках, но когда это делал, код получался "несколько меньшего размера"
-
прошу помощи Johnny. он у нас гуру делфи. и хэндлы ему весьма знакомы;)
-
но надо оптимизировать как-то
Там основной код в процедуре KillTask - уничтожение процесса. Вот его наверняка можно оптимизировать. Просто я сделал, чтобы прога делала все и уничтожалась еще до своего появления.
-
:-\ первая же ссылка в поиске по данному вопросу выдала мне код в одну строку -
Handle := GetForegroundWindow();
закинул в длл. вызов с помощью CALL.
код делфи:
library cmann_plugin;
uses
Windows,
SysUtils;
//------------------------------------------------------------------------------
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( _mas: pInteger; _size: Integer): Integer; export; stdcall;
type
pIntArr = array[0..0] of Integer;
begin
result := GetForegroundWindow(); // присваиваем возвращаемое значение
end;
//------------------------------------------------------------------------------
// список экспорта
exports execute;
begin
// тело пусто
end.
проверяем кликерманом:
CALL("handle.dll")
print($_return1)
halt
длл во вложении.
-
:-\ первая же ссылка в поиске по данному вопросу выдала мне код в одну строку -
Handle := GetForegroundWindow();
А у меня эта функция в несколько строк что ль...? ???
закинул в длл. вызов с помощью CALL.
То есть - теперь в одну паку уже не три, а четыре файла кидать надо? ;D
Я вот сейчас создал пустой проект и скомпилировал его, не написав в нем ни строчки. Не на много он меньше стал...
https://yadi.sk/i/jywy88EG3ZAzfd (https://yadi.sk/i/jywy88EG3ZAzfd)
-
закинул в длл. вызов с помощью CALL.
То есть - теперь в одну паку уже не три, а четыре файла кидать надо? ;D
почему четыре? наоборот, при вызове длл уже не требуется ини, значение сразу возвращается в переменную $_return1. файл один - handle.dll , ... и все, вызываем когда требуется.
а насчет А у меня эта функция в несколько строк что ль...?
это да, таже функция и у тебя присутствует, только вот все остальное... это уже сложнее для понимания ;D . я думал что главное хендл прочитать и передать кликеру, а тут во как оно все замудрено.
-
Ну, я хз. Я с dll-ками ленюсь разобраться капитально и до сих пор с ними не работаю )) Я сделал, что мог. Я совсем не против, если кто-то выложит костыль помоднее ))) А насчет размеров файла - реально не код в нем столько весит. Посмотри скрин, там пустой эксешник весит больше 10мб.
-
CALL("handle.dll")
print($_return1)
halt
Может все же $_return1 заменить на что-нибудь типа - $hd? )) Ато $_return1 как бы используем мы в кликере...))
-
CALL("handle.dll")
print($_return1)
halt
Может все же $_return1 заменить на что-нибудь типа - $hd? )) Ато $_return1 как бы используем мы в кликере...))
:-\ немного непонятно о чем ты... Этот код мы тоже используем в кликере, и CALL возвращает значение именно в системную переменную $_return1, также как и некоторые другие "функции" в кликермане. Смотрим в справку :D.
-
:-\ немного непонятно о чем ты... Этот код мы тоже используем в кликере, и CALL возвращает значение именно в системную переменную $_return1, также как и некоторые другие "функции" в кликермане. Смотрим в справку :D.
А ты сам вообще тестил свое произведение? У меня оно вообще непонятный id показывает... Явно не того окна, которое активно...
Какое бы окно не было активно, оно выдает одно и то же - 546
-
(https://i.imgur.com/OTTwOk9.png)
вроде работает :-\
-
если речь идет именно про id, то есть HGETPID в кликермане. Я думаю все помнят :D
-
вроде работает :-\
https://imgur.com/a/6FP9i3f (https://imgur.com/a/6FP9i3f)
-
если речь идет именно про id, то есть HGETPID в кликермане. Я думаю все помнят :D
При чем тут родительский процесс...? id и хендл - одно и то же )))
-
де работает :-\
https://imgur.com/a/6FP9i3f (https://imgur.com/a/6FP9i3f)
Может у тебя версия кликермана не последняя? В бета версиях гдето до v13.012b вызов длл не работал. Файл "handle.dll" рядом со скриптом лежит? Попробуй закинь в папку %Clickermann%/plugins, как написано в справке. Как видишь, у меня работает :-\.
Мож кто еще потестит... ?
-
Может у тебя версия кликермана не последняя? В бета версиях гдето до v13.012b вызов длл не работал. Файл "handle.dll" рядом со скриптом лежит? Попробуй закинь в папку %Clickermann%/plugins, как написано в справке. Как видишь, у меня работает :-\.
Мож кто еще потестит... ?
https://imgur.com/7HeiMuS (https://imgur.com/7HeiMuS)
Версия последняя
-
Может у тебя версия кликермана не последняя? В бета версиях гдето до v13.012b вызов длл не работал. Файл "handle.dll" рядом со скриптом лежит? Попробуй закинь в папку %Clickermann%/plugins, как написано в справке. Как видишь, у меня работает :-\.
Мож кто еще потестит... ?
https://imgur.com/7HeiMuS (https://imgur.com/7HeiMuS)
Версия последняя
Ну что я могу сказать... :-\ ? Я без понятия почему так. Чтото с вызовом длл у тебя. Кстати, то что написано в справке насчет "директории %Clickermann%/plugins", проверил, не работает. Работает если только сама длл рядом со скриптом, ну или если писать полный или относительный путь к файлу при вызове.
Попробуй сам скомпилировать тестовую длл, ну или свою напиши. Тестовый код есть в версии км 4.7. Кинул во вложение.
-
Попробуй сам скомпилировать тестовую длл, ну или свою напиши. Тестовый код есть в версии км 4.7. Кинул во вложение.
У меня твоя версия сразу кучу ошибок выдает. Я уже говорил - мне еще разбираться с дллками надо... Ты в архив закинь свой кликер, скрипт и дллку. Я попробую.
-
https://yadi.sk/d/v-Ue9jFo3ZB74x
Проверил - скачал, разархивировал, открыл "test.cms" именно этим кликером, запустил, работает как положено :D
-
Странно... С твоего все работает... А че у меня с кликером...?
-
Странно... С твоего все работает... А че у меня с кликером...?
Проверил, скачал последнюю версию http://crapware.aidf.org/page/clickermann х32, вроде работает. Мож что-то с х64 ? Не могу проверить, винда х32.
-
Странно... С твоего все работает... А че у меня с кликером...?
Проверил, скачал последнюю версию http://crapware.aidf.org/page/clickermann х32, вроде работает. Мож что-то с х64 ? Не могу проверить, винда х32.
Ааа... У тебя х32? У меня х64. Значит с ней что-то не так в этом отношении...
-
честно говоря этот момент особо не смотрел и не тестил, но битность библиотеки и программы как бы должны совпадать.
поэтому если кто там уже длл"ки пишет - компилируйте в соответствующую разрядность.