Ребят подскажите пожалуйста, как можно имея несколько spinedit на форме, записать их значения в файл, а потом по щелчку на кнопку восстановить их каждый в свой spinedit. Все это на C++
Для хранения юзай ini файлы, для работы с ними что-то из этого, http://stackoverflow.com/questions/12633/what-is-the-easiest-way-to-parse-an-ini-file-in-c
Сделал так мало ли кому понадобится. Code: #include <inifiles.hpp> Code: TIniFile *ini = new TIniFile(ExtractFilePath(Application->ExeName)+"interval.ini"); Записать в иник Code: ini->WriteString("Interval","interval1",Interval1->Value); Считать из Code: Interval1->Value =StrToInt(ini->ReadString("Interval","interval1",Interval1->Value)); Interval1->Value; это spinedit1->value;
Есть еще вопросик )) Как программно нажать клавишу в активном окне. Мне нужно нажать в браузере клавишу F5 (обновить страничку), но я не знаю какой браузер будет запущен ( Как это сделать подскажите. Заранее спасибо.
Дак к нему как-то обратится надо? Как я из C++ к DOM Обращусь? Надо просто программно нажать F5 в активном окне. Только как определить активное окно? После чего отправить нажатие клавиши туда?
Я думаю что примерно так: http://cboard.cprogramming.com/windows-programming/61016-sending-keystroke-hwnd.html
Code: vector <std::string> cont; Ошибки: Code: error C2143: синтаксическая ошибка: отсутствие ";" перед "<" error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию error C2238: непредвиденные лексемы перед ";"
Короче сделал вот так, может кому пригодится. Все это в таймере. Code: HWND hWind; hWind=GetForegroundWindow(); wchar_t Buffik[255]; GetWindowText(hWind, Buffik, 254); ListBox1->Items->Strings[0]=Buffik; char* listitem = AnsiString(ListBoxik->Items->Strings[0]).c_str(); if (strstr(listitem,"Братва и Кольцо")) { keybd_event(VK_F5, 0, 0 , 0); keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0); } Братва и Кольцо это приложение в контакте )).
Блин, мне уже становится стыдно сюда писать ))) Ребят нужна ваша помощь. Ситуация такая у меня есть таймер. В таймере вызывается функция, которая мышкой кликает в разные места на экране Code: void ClickPos (int x, int y) { SetCursorPos(x,y); mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); // нажали левую кнопку мыши Sleep(30); mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); // отпустили левую кнопку мыши } В таймере она вызывается многократно, с разными параметрами Code: ClickPos(Main->Left+679, Main->Top+94); // Вернуться на площадь Sleep (Settingi->Interval9->Value); ClickPos(Main->Left+581, Main->Top+38); // Проверка на Игровую поляну Sleep (Settingi->Interval5->Value); ClickPos(Main->Left+546, Main->Top+33); // Проверка на ништяк Sleep(Settingi->Interval3->Value); ClickPos(Main->Left+427, Main->Top+229); // Магазин Sleep (Settingi->Interval4->Value); ClickPos(Main->Left+581, Main->Top+38); // Проверка на Игровую поляну Sleep (Settingi->Interval5->Value); ClickPos(Main->Left+Hillx->Value, Main->Top+Hilly->Value); // Использовать навыбор хилок ебать я написал )). Sleep (Settingi->Interval6->Value); ClickPos(Main->Left+305, Main->Top+252); //Проверка на У вас Максимльное здоровье Sleep (Settingi->Interval7->Value); ClickPos(Main->Left+542, Main->Top+33); // Проверка на ништяк Automatikaa1->Interval=320000 Я решил добавить горячие клавиши, чтобы отключать данный таймер. При создании формы Code: RegisterHotKey(Handle,0,MOD_ALT+MOD_CONTROL,VK_RETURN); //Регистрируем под номером 0 связку клавиш Alt + Ctrl + Enter. В обработчике событий Code: void __fastcall TMain::ApplicationEvents1Message(tagMSG &Msg, bool &Handled) { if (Msg.message == WM_HOTKEY) { if (Msg.wParam == 0) // Здесь идет проверка идентификатора. Если параметр 0, что соответствует нашей первой связке, то { Automatikaa1->Enabled=0; // Отключаю таймер ShowMessage("Бот остановлен, чтобы запустить заного, нажмите на кнопку с выбором сложности противника."); } } } При закрытии формы Code: UnregisterHotKey(Handle,0); Дак вот, теперь сама проблема, как понятно из выше приведенного кода, при нажатии на клавиши ALT+CTRL+ENTER Таймер Automatikaa1 должен отключится, после чего должно вылезсти сообщение "Бот остановлен, чтобы запустить заного, нажмите на кнопку с выбором сложности противника", но на деле, если нажать на это сочетание клавиш то, все действия произойдут, только после того как таймер завершит весь код внутри себя. То есть выполнит все вызовы функции ClickPos, и установит интервал Interval=320000. Вопрос, как остановить таймер в любое время, чтобы не дожидаться пока он дощелкает до конца?
не могу сказать точно, но как мне кажется, у тебя там для реализации задержки в 320 секунд вызывается Sleep(320000). Если это так, то разбей этот промежуток по пол-секунды, например, и каждые пол-секунды проверяй, не нажимал ли юзерок на кнопки. как то так: PHP: for(int i=0;i<640;++i){ Sleep(500); //проверка с выходом из цикла }
Она вызывается не Sleep а изменением интервала работы таймера. И как раз во время этой "задержки" все нормально нажимается, а вот когда она заканчивается и таймер начинает работать заного то опять не нажать..
Создай отдельный трид для обработки "внутренностей" кликов мышки. При нажатии связки вызывай Thread.Abort() Почитать примеры можно тут
Может не совсем в тему, но: где можно скачать С++ лучше ентерпрайс? Какая версия лучше? И чтобы нормально активировать? Дайте линк.