Я тут наваял скрипт! Жуть наверное! Думал смогу нагуглить что-то как нажать button1. Помогите, как это делается? Вобще-то там ещё бы ControlFocus, ComboBox1 и Send, ^{Down 9} Вот после FindWindow() надо вставить. Ну, ничего на эту тему не могу найти, даже не ожидал. Если читать msdn это на полгода затянет) Хочется быстрее. Код (Text): include '%fasm%/win64ax.inc' section '.code' executable start: sub rsp,8 macro kg x,y,z,w { invoke GetCurrentDirectory,MAX_PATH,x invoke PathAppend,x,w invoke CreateFile,x,GENERIC_WRITE,NULL,NULL,4,FILE_ATTRIBUTE_NORMAL,NULL mov [i],eax invoke WriteFile,[i],y,z,o,NULL invoke CloseHandle,[i] } kg BASSMODP,BASSMODF,BASSMODZ,'BASSMOD.dll' kg R2RIKM3P,R2RIKM3F,R2RIKM3Z,'R2RIKM3.dll' kg KEYGENPP,KEYGENFF,KEYGENZZ,'KEYGEN.EXE' invoke ShellExecute,NULL,NULL,'keygen.exe',NULL,NULL,SW_NORMAL invoke FindWindow,NULL,'IK Multimedia KeyGen v5.1.0' ;invoke SendMessage,eax,WM_CLOSE,NULL,NULL invoke PostMessage,eax,WM_LBUTTONDOWN,1,NULL invoke Sleep,3000 invoke CreateToolhelp32Snapshot,0fh,NULL mov [x],eax mov [pe32.dwSize],sizeof.PROCESSENTRY32 invoke Process32First,[x],pe32 test eax,eax jz it @@: invoke Process32Next,[x],pe32 test eax,eax jz it invoke lstrcmpi,pe32.szExeFile,'keygen.exe' test eax,eax jnz @r invoke OpenProcess,1,NULL,[pe32.th32ProcessID] invoke TerminateProcess,eax,NULL jmp @r it: invoke Sleep,1000 macro fo x { mov [lpFileOp.wFunc],3 mov [lpFileOp.fFlags],20 mov [lpFileOp.pFrom],x invoke SHFileOperation,lpFileOp } fo BASSMODP fo R2RIKM3P fo KEYGENPP invoke MessageBoxTimeout,HWND_DESKTOP,'Complete','',MB_TOPMOST,LANG_NEUTRAL,2000 exit: invoke ExitProcess,NULL section '.data' readable writeable BASSMODF file '$\BASSMOD.dll' R2RIKM3F file '$\R2RIKM3.dll' KEYGENFF file '$\KEYGEN.EXE' BASSMODZ = $ - BASSMODF R2RIKM3Z = $ - R2RIKM3F KEYGENZZ = $ - KEYGENFF BASSMODP rb MAX_PATH R2RIKM3P rb MAX_PATH KEYGENPP rb MAX_PATH i dd NULL o dd NULL y dd NULL x dd NULL struct SHFILEOPSTRUCT hwnd dq NULL wFunc dq NULL pFrom dq NULL pTo dq NULL fFlags dq NULL fAnyOperationsAborted dq NULL hNameMappings dq NULL lpszProgressTitle dq NULL ends lpFileOp SHFILEOPSTRUCT struct PROCESSENTRY32 dwSize dd MAX_PATH cntUsage dd NULL th32ProcessID dq NULL th32DefaultHeapID dq NULL th32ModuleID dd NULL cntThreads dd NULL th32ParentProcessID dd NULL pcPriClassBase dd NULL dwFlags dd NULL szExeFile db MAX_PATH dup NULL ends pe32 PROCESSENTRY32 Ещё хотел CreateProcess + WaitForSingleObject, но наверное это тут никчему, потому что из кейгена ещё MsgBox выскакиает, ненужное окно.
Вы в самодеятельности участвуете? – Участвую! Зачем я соврал, я ж не участвую? А зачем он спросил?.. Зубы заговаривает. Недавно меня тоже спросили, но я так и не пообщался, хотя рекомендовали)
Если отправляешь WM_LBUTTONDOWN, то надо и WM_LBUTTONUP. Отправлять надо батону, а не основному окну. То есть перечислив дочерние найти мессаджбокс и в нем батон. А процессы перечислять для получения PID не надо, если создаешь процесс сам.
EnumChildWindows ... в свою очередь, в определяемую приложением функцию обратного вызова И тут я завис... CallBack функция которая выполняет что-то куда-то.
Код (Text): include '%fasm%\win64ax.inc' start: sub rsp,8 invoke ShellExecute,NULL,NULL,'calc.exe',NULL,NULL,SW_RESTORE invoke Sleep,500 invoke FindWindow,'CalcFrame',NULL mov [i],eax invoke FindWindowEx,[i],NULL,NULL,'3' mov [o],eax invoke SendMessage,[o],BM_CLICK,NULL,NULL exit: invoke ExitProcess,NULL section '.data' readable writeable i dd NULL o dd NULL section '.idata' import readable library kernel32,'KERNEL32.DLL',shell32,'SHELL32.DLL',user32,'USER32.DLL' include '%fasm%/api/kernel32.inc' include '%fasm%/api/shell32.inc' include '%fasm%/api/user32.inc' Оказывается у меня был когда-то такой скромный вариант, теперь не работает почему-то.
Это стиль окна такой или это Win7? Или это Windows 11? У меня пока Button1 в калькуляторе. --- Сообщение объединено, 2 янв 2025 --- Да, это прога Microsoft Spy++ что-то не то показывает! )) --- Сообщение объединено, 2 янв 2025 ---
Все так она показывает. У кнопок нет заголовков. На них нацепили картинки (bitmap). Поэтому второй вызов Код (ASM): invoke FindWindowsEx, [i], NULL, NULL, '3' не находит нужную кнопку и возвращает 0. И у вас там показан instance, а не text. FindWindowEx в 4 параметра ищет именно по text (caption).