Ребят, подскажите возможно сделать так. У меня программа, кликает мышкой по заданным заранее координатам экрана, то есть по тому окну которое Ontop в момент щелчка. И пользоваться другими программами, смотреть видео и т.п. не представляется возможным в это время, реально ли сделать так, чтобы он щелкал в фоновом режиме, ну или по окну которое не ontop?
Ну блин, это вроде щелчки курсором относительно окна приложения. Если я правильно понял. А нельзя ли допустим отловить приложение, и щелкать в нем мышкой, при том, что окна приложения не видно на экране? (Оно не свернуто, просто под другими окнами, других приложений.)
Code: #include <iostream> #include "stdafx.h" #include <windows.h> #include <mmdeviceapi.h> #include <endpointvolume.h> using namespace System; int main(){ CoInitialize(NULL); return 0; } -> Code: 1>хх.obj : error LNK2028: ссылка на неразрешенную лексему (0A00001E) "extern "C" long __stdcall CoInitialize(void *)" (?CoInitialize@@$$J14YGJPAX@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ) 1>хх.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" long __stdcall CoInitialize(void *)" (?CoInitialize@@$$J14YGJPAX@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ) WTF??
Darth Padla, компоновщик не смог найти код для CoInitialize. Вероятно не подключена нужная библиотека. добавь ole32.lib в зависимости при линковке (прописать её в Linker -> Input -> Additional Dependencies свойств проекта).
Помогите разобратся как получить правильную длину массива байт Code: #include <iostream> #include <Windows.h> #define ARRAY_LENGTH(array) (sizeof(array)/sizeof((array)[0])) struct fek { DWORD* offsets; BYTE** bytes; fek() { offsets = (DWORD*) malloc(100); bytes = (BYTE**) malloc(300); } }; int main() { fek *fuk = new fek(); BYTE bytez[6] = { 0x33, 0x44, 0x77, 0x55, 0x81, 0x90 }; fuk -> offsets[0] = 0x4444444; fuk -> bytes[0] = (BYTE*)bytez; printf("offsets [0]: %X\n", fuk -> offsets[0]); int len = ARRAY_LENGTH(fuk -> bytes[0]); //неправильно printf("Len: %d\n", len); for(int i = 0; i < len; i++) { printf("0x%X\n", (BYTE*)fuk -> bytes[0][i]); } getchar(); return 0; } Подскажите, как же это делается .
DeepBlue7 sizeof не работает с памятью, выделенной через malloc, поскольку оно возвращает указатель типа void*, не сохраняющий информацию о размере типа. Вместо этого у тебя возвращается размер указателя (4 байта, 32bit mode). Есть решение: объявить компилятору, что указатель идет на массив конкретного размера, память под который будет выделена в рантайме. Вот пример кода: Code: #include <stdlib.h> #include <stdio.h> #include <string.h> int main() { char one[] = "Hello"; [COLOR=Yellow]char(*two)[100][/COLOR] = (char(*)[100])malloc(100); strncpy((char*)two, "World!", 99); printf("sizeof(one) = %d\nsizeof(*two) = %d", sizeof(one), sizeof([COLOR=Red]*[/COLOR]two)); return 0; } Но практического смысла в данном коде, имхо нет. Памяти нынче достаточно чтобы хранить длины буферов прямо в структурах, а в C++ сам автор языка (Страуструп) рекомендует по минимуму использовать родные массивы языка, предпочитая им std::vector. К слову, вектор работает также быстро как и нативный массив, если ему зарезервировать память перед использованием методом reserve.
c++ Вопрос... Пишу дллку (хукаю в другой процесс), необходимо перезаписать оффсет на который следует прыгнуть инструкцией jmp. Сугубо для примера: Code: 00381BFD . C3 RETN 00381BFE > $ E8 46050000 CALL 00382149 00381C03 .^E9 B3FDFFFF JMP 003819BB //изменить 0x003819bb на 0x13371337 00381C08 > 8BFF MOV EDI,EDI Собственно, в функцию передаю 2 параметра - DWORD from, DWORD to... Я так понимаю, надо вычислять относительный оффсет... но вот как - подскажите, пожалуйста.
Вопрос 1 - как преобразовать HRESULT в читабельный вид?или хотя бы где посмотреть. cout<<hr выдает Вопрос 2 - почему GetMute и GetMasterVolume выдают unknown error,а SetMute работает? Code: BOOL *mute; hr=pVolume->GetMute(mute); switch(hr){ case E_POINTER: cout<<"Parameter pbMute is NULL."; break; case AUDCLNT_E_DEVICE_INVALIDATED: cout<<"The audio endpoint device has been unplugged, or the audio hardware or associated hardware resources have been reconfigured, disabled, removed, or otherwise made unavailable for use."; break; case AUDCLNT_E_SERVICE_NOT_RUNNING: cout<<"The Windows audio service is not running."; break; case S_OK: cout<<"GetMute - no errors"; break; default: cout<<"GetMute - unknown error"<<hr<<endl; } cout<<"Mute - "<<mute<<endl; float *MastVol; hr=pVolume->GetMasterVolume(MastVol); switch(hr){ case E_POINTER: cout<<"Parameter pbMute is NULL."; break; case AUDCLNT_E_DEVICE_INVALIDATED: cout<<"The audio endpoint device has been unplugged, or the audio hardware or associated hardware resources have been reconfigured, disabled, removed, or otherwise made unavailable for use."; break; case AUDCLNT_E_SERVICE_NOT_RUNNING: cout<<"The Windows audio service is not running."; break; case S_OK: cout<<"GetMasterVolume - no errors"; break; default: cout<<"GetMasterVolume - unknown error"<<endl; } cout<<"Master Volume - "<<MastVol<<endl; hr=pVolume->SetMute(1,NULL); switch(hr){ case AUDCLNT_E_DEVICE_INVALIDATED: cout<<"The audio endpoint device has been unplugged, or the audio hardware or associated hardware resources have been reconfigured, disabled, removed, or otherwise made unavailable for use."; break; case AUDCLNT_E_SERVICE_NOT_RUNNING: cout<<"The Windows audio service is not running."; break; case S_OK: cout<<"setmute - no errors"; break; default: cout<<"setmute - unknown error"<<endl; } http://msdn.microsoft.com/en-us/library/windows/desktop/dd316531 Вопрос 3 - как на этом форуме вставить спойлер? Spoiler это и Spoiler это не работают..
1. Погуглить. http://goo.gl/ls21D 2. Потому что передаешь указатель, на непойми куда. 3. Кто сказал, что на этом форуме есть spoiler?
Code: double p, x = 2.0, y = 3.0; p = log(x)-exp(x+y)/sqrt(2.0)+pow(x,2)+abs(pow(x,3)-ln(y)); printf("%f",p); Пишет индификатор ln не определен. Подскажите пожалуйста в чем ошибка.
какая библиотека подойдет для работы с изображения? конкретнее — jpg, еще конкретнее — склейка изображений. http://www.imagemagick.org/Magick++/ не особо удобен, да и готов выслушать альтернативы
Возникла проблема с boost regex. Беру код отсюда http://habrahabr.ru/post/64226/ Code: #include <iostream> #include <boost/regex.hpp> using namespace std; int main () { std::string xStr("The boost library has a great opportunity for the regex!"); boost::regex xRegEx("\\b(?:\\w+?)((\\w)\\2)(?:\\w+?)\\b"); boost::smatch xResults; std::cout << "==========================Results============================== \n"; std::string::const_iterator xItStart = xStr.begin(); std::string::const_iterator xItEnd = xStr.end(); while( boost::regex_search(xItStart, xItEnd, xResults, xRegEx) ) { std::cout << "Word, we've searched, is \"" << xResults[0] << "\". It has two \"" << xResults[2] << "\" inside itself.\n"; xItStart = xResults[1].second; } return 0; } Компилируется нормально, но в отчете есть такая строка: Code: LINK : не найден или не выполнена сборка c:\documents and settings\admin\мои документы\visual studio 2010\Projects\boost_test\Debug\boost_test.exe при последней инкрементной компоновке; выполняется полная компоновка Это нормально? Также программа ничего не выводит, а отладчик выкидывает такое: Code: "boost_test.exe": Загружено: "C:\Documents and Settings\Admin\Мои документы\Visual Studio 2010\Projects\boost_test\Debug\boost_test.exe", Символы загружены. "boost_test.exe": Загружено: "C:\WINDOWS\system32\ntdll.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\kernel32.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\msvcp100d.dll", Символы загружены. "boost_test.exe": Загружено: "C:\WINDOWS\system32\msvcr100d.dll", Символы загружены. "boost_test.exe": Загружено: "C:\WINDOWS\system32\user32.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\gdi32.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\imm32.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\advapi32.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\rpcrt4.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\secur32.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\lpk.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\usp10.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\Program Files\Agnitum\Outpost Firewall Pro\wl_hook.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\shell32.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\msvcrt.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\shlwapi.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll", Невозможно найти или открыть файл PDB "boost_test.exe": Загружено: "C:\WINDOWS\system32\comctl32.dll", Невозможно найти или открыть файл PDB И такой вывод для любого случая. Даже в таком примере: Code: #include <iostream> #include <boost/regex.hpp> using namespace std; int main () { char test[] = "text text"; boost::cmatch m; boost::regex exp("(\\S+"); if ( boost::regex_match( test, m, exp ) ) { int sz = m.size(); for ( int i = 0; i < sz; ++ i ) std::cout << std::string( m[i].first, m[i].second ) << std::endl; } return 0; }
Это нормально. Программа линкуется и запускается, просто консоль открывается и сразу закрывается, поэтому ты не видишь результата выполнения программы. Можешь запустить из-под консоли или через Ctrl+F5 в студии, либо поставить брейкпоинт на конец программы и посмотреть вывод.