Warcraft 3 "Защита базы с выбором персонажа сложные Триггеры" 70KB
StarCraft "Escape from space base 2" 440KB
Warcraft 3 "Hunter or Victim 0.92 Rus" 7,992KB
Warcraft 3 "TFT подборка 25 карт [Awesomealldays] (Rus|Verm)" 82,629KB
Warcraft 3 "Набор карт Crisis (БагатыеРудники) v.1.0 от Мав Исяня" 9,696KB
Warcraft 3 "Rubattle.net Warcraft 3 TFT 1x1 Random Races Tournament 2020" 2,344KB
Warcraft 3 "Ragnarok" 1,058,343KB
Warcraft 3 "Rubattle.net WarCraft 3 TFT 1v1 Tournament 2020" 4,092KB
Warcraft 3 "Набор карт IllusionIsla (БагатыеРудники) v.1.0 от Мав Исяня" 17,738KB
sorceress lightning infinity build by nrita (75)
Вопрос по ФО сорке (19)
Quest kill? (9)
O infiniti gp 322 (3)
Need list / offer (периодически обновляется) (29)
N rare пояс [sc] (0)
Удалил игрока (5)
даю vex за трек (18)
вопрос про фпс (12)
PVP на 30 лвл нс за LO (6)
Восстановление маны в шмотках (27)
Normal/ Кому то нужен Cathan's Seal ? (2)
Респек скиллов в мультиплейере (8)
Отвлечься на секунду от обсуждения pvp, postroykas и прочих ботоводов. (190)
Нужна Сылочка!!!!!!!(diablo 2 resurrection) (4)
где скачать рабочую версию D2 LoD? (4)
Альтернативный клиент (356)
ресурректед (85)
Неожиданный дроп 2021 (171)
Альянс
Орда
Нежить
Ночные Эльфы
Нейтральные
Видео
Реплеи
Карты
DotA Allstars
Ресурсы
Панель команд юнитов
Файлы
Турниры
Статистика
Форум
Видео
Персонажи
Колдун
Варвар
Чародей
Монах
Охотник на демонов
Спутники
Карта Мира
Система навыков
Руны
Файлы
Форум
Привязка курсора к окну d2
#include
#pragma hdrstop
#include "Unit1.h"
#include
#include
#pragma package(smart_init)
#pragma resource "*.dfm"
using namespace std;
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
RECT rcClip;
RECT rcOldClip;
HWND Wnd;
tagPoint Pos;
RECT Rect;
bool u1 = false;
std::string s;
AnsiString name = ExtractFilePath(Application->ExeName)+"pos.ini";
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (!u1) {
u1 = true;
Button1->Caption = "Unlock";
Sleep(1000);
GetClipCursor(&rcOldClip);
GetCursorPos(&Pos);
Wnd = WindowFromPoint(Pos);
Timer1->Enabled = true;
} else {
u1 = false;
Button1->Caption = "Lock";
Timer1->Enabled = false;
ClipCursor(&rcOldClip);
Label5->Caption = rcOldClip.left;
Label6->Caption = rcOldClip.top;
Label7->Caption = rcOldClip.right;
Label8->Caption = rcOldClip.bottom;
}
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
GetWindowRect(Wnd, &rcClip);
rcClip.left = rcClip.left + 5;
rcClip.right = rcClip.right - 5;
rcClip.top = rcClip.top + 29;
rcClip.bottom = rcClip.bottom -5;
ClipCursor(&rcClip);
Label5->Caption = rcClip.left;
Label6->Caption = rcClip.top;
Label7->Caption = rcClip.right;
Label8->Caption = rcClip.bottom;
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ifstream in;
int r;
in.open(name.c_str());
for (;in.peek()!=EOF;)
{
in>>r;
Form1->Left = r;
in>>r;
Form1->Top = r;
}
in.close();
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
ofstream in(name.c_str(),ios_base::in | ios_base::out | ios_base::trunc);
in << Form1->Left;
in << "\n";
in << Form1->Top;
in.close();
}
t.A.T.u., а то, что любые сторонние прожки запрещены, не смущаэ? %) Одмен одобряэ? ;)
Sleep(1000);
ShowMessage("u vas 5 sekund chtobi zalochit okno");
Sleep(5000);
vot tak norm mb :D
типо привязка к окну это чит?) xD
LGt_Justice, ни в коем разе. просто на моей работе, например, "чит" - это то, что Москва назвала читом..
Отступы большие, кажется. Когда я себе такую штуку делал - ставил 3/22 (это был AHK/WinGetPos и стандартный Aero, если что. Про XP уже не помню - мб там заголовок и более узкий был).
Т.е., по-хорошему, их надо делать конфигурируемыми.
Вот аналог такой же проги, только написанной на си:
Link. Запускаем прогу. Видим, что начался поиск окна д2. Запускаем д2, ждем до появления Messagebox`a, нажимаем Enter и играем. Чтобы сделать все назад, переключаемся на прогу, вводим любой символ и нажимаем Enter или просто нажимаем Ctrl+C.
Вот аналог такой же проги, только написанной на си:
Как минимум, ты передаёшь ClipCursor() неизменным тот RECT, что получаешь от GetWindowRect(). А это значит, что у тебя курсор может попадать на рамку или заголовок окна, что очень неприятно. Потому и нужны отступы.
А вообще, проще сразу юзать AHK, который именно для подобных вещей и предназначен (правда, синтаксис тамошнего скриптового языка не всякому придется по вкусу). И "конфигурировать" легко. Просто открыл текстовичок со скриптиком - и поменял значения отступов, тайтл и т.д.
y TC poka luchshe proga chem y tatu izza otstupov i kursor ne zavisaet esli silno uvesti vbok vse good rabotaet, no na shet "konfigurirovat"(kak napisal Enceladus) bilo b neploxo.
P.S. Enceladus ti ne mog bi vilozhit svoi variant, esli tebe ne slozhno ?
vo teper ochen kruto stalo, thx Tatu, sei chas y tebya good proga poluchilas :)
2 t.A.T.u.
A mozhesh sdelat chto b tvoe okno eto gde nibyd v storonke bilo vnizy ? chtob ne meshalo ili chtob ono rabotalo v svernutom sostoianii, takoe realno ?
ana94
seichas proga eshe gosee(s autodetectom d2). prosto zapusti, sverni progu, podojdi 5 sekund, najmi enter i igrai. rghost.ru/37303489 - link
a esli need zapuskat' v svernutom sostoyanii, sozdai yarlik na rabochii stol(ili v drugoe mesto). na yarlike pravoi knopkoi -> svoistva -> okno -> svernutoe v znachok -> ok. teper' ona budet zapuskatsa v svernutom sostoyanii
P.S. Enceladus ti ne mog bi vilozhit svoi variant, esli tebe ne slozhno ?
Мой вариант - маленький скрипт для AHK. Сейчас у меня на этом компе его нет, так что просто расскажу - что он делал. Работал он просто - искал окно по тайтлу и получал его rect при помощи WinGetPos (как я уже писал). Этот rect уменьшался согласно заданным отступам и подавался на вход ClipCursor() при помощи DllCall. Включался по сочетанию клавиш ctrl + shift + f11, выключался по ctrl + shift + f12. Элементарно, короче. :}
ibo v title mojet mnogo vsyakoi chepuhi bit' napisano, kotoruyu len' pisat' v kod
vsegda ishu okno po classu ;[ ibo v title mojet mnogo vsyakoi chepuhi bit' napisano, kotoruyu len' pisat' v kod
Ага. А может и не быть - это больше от тебя зависит. В принципе, это второстепенные детали реализации. Как я уже писал, в AHK вызов WinGetPos сразу тебе и окно ищет, и rect получает. Т.е. тупо короче получается просто искать по тайтлу. В моём случае искать по классу не было особого профита. :]
rghost.ru/37306282
обновил если кому надо
вот содержимое pos.ini:
-расстояние верхней левой точки формы окна от левого края экрана в пикселах
-расстояние верхней левой точки формы окна от верхнего края экрана в пикселах
-задержка перед началом работы в миллисекундах
-отступ от левого края окна игры в пискелах
-отступ от правого края окна игры в пискелах
-отступ от верхнего края окна игры в пискелах
-отступ от нижнего края окна игры в пискелах
-заголовок формы программы без пробелов
-сворачивать ли форму программы после привязки курсора? (0 - нет, не 0 - да)
-запускать ли привязку сразу после запуска программы (0 - нет, не 0 - да)
это ж билдер (я релиз не делал) + там еще исходники лежат
а на c# чета WinAPI не работает, разбираться лень ^_^ думал сначала на нем написать
можно еще по идее сделать при альттабе - если перешли на процесс diablo2.exe - привязывать в нему, если нет - отменять привязку
токо хз как :D
Написал маленькую прогу на былдере, мб кому пригодится. Очень удобно например соркой летать, экономится время (так как всегда летаем на чуть большее расстояние).
ifolder.ru/29607498
Как юзать:
Запускаем exe, тыкаем lock. У вас есть секунда, чтобы навести курсор на окно, к которому нужно привязать курсор. Чтобы вернуть всё назад, табаемся в прогу и жмем enter.
Работает на 7-ке, насчет других ОС - не знаю).