Нажать кнопку button1

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 26 дек 2024.

  1. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Я тут наваял скрипт! Жуть наверное! Думал смогу нагуглить что-то как нажать button1.
    Помогите, как это делается?
    Вобще-то там ещё бы ControlFocus, ComboBox1 и Send, ^{Down 9}
    Вот после FindWindow() надо вставить.
    Ну, ничего на эту тему не могу найти, даже не ожидал. Если читать msdn это на полгода затянет)
    Хочется быстрее.

    Код (Text):
    1. include '%fasm%/win64ax.inc'
    2. section '.code' executable
    3. start:
    4.         sub rsp,8
    5.  
    6.         macro kg x,y,z,w {
    7.  
    8.         invoke GetCurrentDirectory,MAX_PATH,x
    9.         invoke PathAppend,x,w
    10.  
    11.         invoke CreateFile,x,GENERIC_WRITE,NULL,NULL,4,FILE_ATTRIBUTE_NORMAL,NULL
    12.         mov [i],eax
    13.         invoke WriteFile,[i],y,z,o,NULL
    14.         invoke CloseHandle,[i] }
    15.  
    16.         kg BASSMODP,BASSMODF,BASSMODZ,'BASSMOD.dll'
    17.         kg R2RIKM3P,R2RIKM3F,R2RIKM3Z,'R2RIKM3.dll'
    18.         kg KEYGENPP,KEYGENFF,KEYGENZZ,'KEYGEN.EXE'
    19.  
    20.         invoke ShellExecute,NULL,NULL,'keygen.exe',NULL,NULL,SW_NORMAL
    21.  
    22.         invoke FindWindow,NULL,'IK Multimedia KeyGen v5.1.0'
    23.         ;invoke SendMessage,eax,WM_CLOSE,NULL,NULL
    24.         invoke PostMessage,eax,WM_LBUTTONDOWN,1,NULL
    25.  
    26.         invoke Sleep,3000
    27.  
    28.         invoke CreateToolhelp32Snapshot,0fh,NULL
    29.         mov [x],eax
    30.         mov [pe32.dwSize],sizeof.PROCESSENTRY32
    31.  
    32.         invoke Process32First,[x],pe32
    33.         test eax,eax
    34.         jz it
    35. @@:
    36.         invoke Process32Next,[x],pe32
    37.         test eax,eax
    38.         jz it
    39.  
    40.         invoke lstrcmpi,pe32.szExeFile,'keygen.exe'
    41.         test eax,eax
    42.         jnz @r
    43.         invoke OpenProcess,1,NULL,[pe32.th32ProcessID]
    44.         invoke TerminateProcess,eax,NULL
    45.         jmp @r
    46. it:
    47.         invoke Sleep,1000
    48.  
    49.         macro fo x {
    50.  
    51.         mov [lpFileOp.wFunc],3
    52.         mov [lpFileOp.fFlags],20
    53.         mov [lpFileOp.pFrom],x
    54.         invoke SHFileOperation,lpFileOp }
    55.  
    56.         fo BASSMODP
    57.         fo R2RIKM3P
    58.         fo KEYGENPP
    59.  
    60.         invoke MessageBoxTimeout,HWND_DESKTOP,'Complete','',MB_TOPMOST,LANG_NEUTRAL,2000
    61. exit:
    62.         invoke ExitProcess,NULL
    63.  
    64. section '.data' readable writeable
    65.  
    66.         BASSMODF file '$\BASSMOD.dll'
    67.         R2RIKM3F file '$\R2RIKM3.dll'
    68.         KEYGENFF file '$\KEYGEN.EXE'
    69.         BASSMODZ = $ - BASSMODF
    70.         R2RIKM3Z = $ - R2RIKM3F
    71.         KEYGENZZ = $ - KEYGENFF
    72.  
    73.         BASSMODP rb MAX_PATH
    74.         R2RIKM3P rb MAX_PATH
    75.         KEYGENPP rb MAX_PATH
    76.  
    77.         i dd NULL
    78.         o dd NULL
    79.         y dd NULL
    80.         x dd NULL
    81.  
    82. struct SHFILEOPSTRUCT
    83.  
    84.         hwnd dq NULL
    85.         wFunc dq NULL
    86.         pFrom dq NULL
    87.         pTo dq NULL
    88.         fFlags dq NULL
    89.         fAnyOperationsAborted dq NULL
    90.         hNameMappings dq NULL
    91.         lpszProgressTitle dq NULL
    92. ends
    93.         lpFileOp SHFILEOPSTRUCT
    94.  
    95. struct PROCESSENTRY32
    96.  
    97.         dwSize dd MAX_PATH
    98.         cntUsage dd NULL
    99.         th32ProcessID dq NULL
    100.         th32DefaultHeapID dq NULL
    101.         th32ModuleID dd NULL
    102.         cntThreads dd NULL
    103.         th32ParentProcessID dd NULL
    104.         pcPriClassBase dd NULL
    105.         dwFlags dd NULL
    106.         szExeFile db MAX_PATH dup NULL
    107. ends
    108.         pe32 PROCESSENTRY32
    Ещё хотел CreateProcess + WaitForSingleObject, но наверное это тут никчему,
    потому что из кейгена ещё MsgBox выскакиает, ненужное окно.
     
  2. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    490
    c ШизоИИ еще не общаетесь? :)
     
    Semiono нравится это.
  3. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Вы в самодеятельности участвуете? – Участвую! Зачем я соврал, я ж не участвую? А зачем он спросил?.. Зубы заговаривает.
    Недавно меня тоже спросили, но я так и не пообщался, хотя рекомендовали)
     
  4. MaKsIm

    MaKsIm Active Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    120
    Читайте MSDN. Там не так все и сложно. И не растянется ничего на полгода.
     
    Semiono нравится это.
  5. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.009
    Если отправляешь WM_LBUTTONDOWN, то надо и WM_LBUTTONUP. Отправлять надо батону, а не основному окну. То есть перечислив дочерние найти мессаджбокс и в нем батон. А процессы перечислять для получения PID не надо, если создаешь процесс сам.
     
    Semiono нравится это.
  6. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    EnumChildWindows ... в свою очередь, в определяемую приложением функцию обратного вызова
    И тут я завис... CallBack функция которая выполняет что-то куда-то.
     
  7. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Код (Text):
    1. include '%fasm%\win64ax.inc'
    2.  
    3. start:
    4.         sub rsp,8
    5.  
    6.         invoke ShellExecute,NULL,NULL,'calc.exe',NULL,NULL,SW_RESTORE
    7.         invoke Sleep,500
    8.  
    9.         invoke FindWindow,'CalcFrame',NULL
    10.         mov [i],eax
    11.         invoke FindWindowEx,[i],NULL,NULL,'3'
    12.         mov [o],eax
    13.         invoke SendMessage,[o],BM_CLICK,NULL,NULL
    14. exit:
    15.         invoke ExitProcess,NULL
    16.  
    17. section '.data' readable writeable
    18.  
    19.         i dd NULL
    20.         o dd NULL
    21.  
    22. section '.idata' import readable
    23.  
    24.         library kernel32,'KERNEL32.DLL',shell32,'SHELL32.DLL',user32,'USER32.DLL'
    25.         include '%fasm%/api/kernel32.inc'
    26.         include '%fasm%/api/shell32.inc'
    27.         include '%fasm%/api/user32.inc'
    Оказывается у меня был когда-то такой скромный вариант, теперь не работает почему-то.
     
  8. MaKsIm

    MaKsIm Active Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    120
    Просто у калькулятора на кнопках теперь не текст, а картинки Снимок экрана_20250102_193845.png
     
    Semiono нравится это.
  9. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Это стиль окна такой или это Win7? Или это Windows 11? У меня пока Button1 в калькуляторе.

    :)
    --- Сообщение объединено, 2 янв 2025 ---
    Да, это прога Microsoft Spy++ что-то не то показывает! ))
    --- Сообщение объединено, 2 янв 2025 ---
    Snap1.png
     
  10. MaKsIm

    MaKsIm Active Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    120
    Все так она показывает. У кнопок нет заголовков. На них нацепили картинки (bitmap). Поэтому второй вызов
    Код (ASM):
    1. invoke FindWindowsEx, [i], NULL, NULL, '3'
    не находит нужную кнопку и возвращает 0.

    И у вас там показан instance, а не text. FindWindowEx в 4 параметра ищет именно по text (caption).
     
    Semiono нравится это.