Author Topic: Winapi  (Read 3579 times)

0 Members and 1 Guest are viewing this topic.

Валерий Примаков

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Winapi
« on: December 03, 2015, 11:00:03 PM »
Доброй ночи.
И опять про Winapi.
По совету многоопытного Золотого, мне пришлось потратить энное количество часов на понимание функций Winapi. На мой взгляд, удалось понять крайне мало. Читал и справочники по Winapi, и учебники, Ютуб смотрел, данные поиска по этому форуму и т.д. Много, почти все не доходит. Как говориться, уж какой есть. Понятно, что Winapi это сборник функций, который есть в каждом WINDOWS, и который используют другие языки программирования, например С++, чтобы не писать свои подобные, раз уж есть эти. Остальное все непонятно. Если коротко, то что прошу от местных мэтров (в идеале).
Описание желательно всех функций Winapi используемых здесь, или ссылка на понятное нубу описание. Например мне было бы понятно.

SENDMESSAGE(WNDFIND("- Google Chrome",0),0x0010,0,0) // закрыть окно по HWNDу

или для WM_TIMER, какие действия с таймером, как менять заданную величину в секундах и т.д.

пошарив по поиску на данном форуме, мне удалось найти еще 5 подобных строчек, с разными кодами (0x0010)
В одной из тем, Золотой сильно мне помог, кинув одну замечательную ссылку http://www1.u-netsurf.ne.jp/~ozawa/prog/event/message.html
Там таких команд, которые здесь используются, более 120. Так вот в идеале, хотелось бы какое нибудь описание, что получиться, когда эти команды вставляешь в  SENDMESSAGE. Конечно, это можно делать и самому, немного английского со школы еще осталось, может до чего и сам дойду, методом проб. Но мне кажется, что есть уже готовые пособия, в которых все это описано. Хотя бы какие нибудь, самые употребительные прошу выставить на всеобщее использование.

Написал этот спич, от попыток самостоятельно, решить вопрос с активностью открытых окон, и их переключением. Открываю простой блокнот для описания выбора, далее inputbox для ввода информации(номера позиций из блокнота) . Так у меня цифры вводятся в блокнот, а не в inputbox. Хотя последним открылся inputbox. Игра с задержками ничего не дала.  По каждому копеечному вопросу, приходиться горы информации перелопачивать, а выхлоп ноль, или почти ноль.

Прошу помощи по этим вопросам. Заранее Спасибо всем.


Валерий Примаков

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Winapi
« Reply #2 on: December 17, 2015, 05:04:56 PM »
Всем добрый день.
 Я о своем, о Winapi
Пытаюсь научиться пользоваться функцией SENDMESSAGE. Команда  WM_PASTE
Для справки, чтобы нигде дополнительно не лазить.
"Приложение отправляет сообщение WM_PASTE  полю редактирования текста или комбинированному блоку, чтобы копировать текущее содержание буфера обмена в поле редактирования текста в текущей позиции каретки. Данные вставляются только тогда, если буфер обмена содержит информацию в формате CF_TEXT.
 lResult = SendMessage(  // возвращает LRESULT в lResult
   (HWND) hWndControl,    // обрабатывает целевой орган управления
   (UINT) WM_PASTE,    // ID сообщения
   (WPARAM) wParam,    // = (WPARAM) () wParam;
   (LPARAM) lParam    // = (LPARAM) () lParam;);   
Параметры
wParam Не используется; должно быть нуль.
lParam Не используется; должно быть нуль
Возвращаемые значения Это сообщение не возвращает значений."

Написал код Кликерманна.

TOCLIP ("Какая нибудь фраза")
SENDMESSAGE (WNDFIND("Блокнот",0), 0x0302, 0, 0)
halt

Блокнот открыт, код запустил, реакции никакой.
Подскажите, где моя ошибка. Заранее спасибо.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Winapi
« Reply #3 on: December 17, 2015, 05:10:52 PM »
Блокнот открыт, код запустил, реакции никакой.
Подскажите, где моя ошибка. Заранее спасибо.

У блокнота 2а окна, заголовок и поле ввода. Ты шлешь "вставить" не в то окно!

Валерий Примаков

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Winapi
« Reply #4 on: December 17, 2015, 05:29:12 PM »
Это понятно, а как сказать функции, чтобы послала сообщение именно в то окно, какое надо?
Вот так у меня срабатывает. (Номер окна взят непосредственно перед запуском скрипта)

TOCLIP ("Какая нибудь фраза")
SENDMESSAGE (789338, 0x0302, 0, 0)
halt

А как мне связать этот номер с именем окна? HWND изменяется от одного файла, к другому. Более того, заново открытый тот же новый файл Блокнот, имеет новый HWND. Каждый раз кликать в окно и узнавать новый HWND?
Может есть какой универсальный метод занести в функцию название окна. Спасибо заранее.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Winapi
« Reply #5 on: December 17, 2015, 05:42:49 PM »
Как то так.
Code: (clickermann) [Select]
TOCLIP ("Какая нибудь фраза") // текст в буфер
$hw = WNDFIND("- Блокнот", 0) // Поиск окна по заголовку
IF($hw > 0) // если окно найдено
   WNDBUMP($hw) // поднимаем его выше всех
   WNDGETINFO($hw, $pos1, $pos2, $siz1, $siz2) // получаем координаты
   SENDMESSAGE (HGET($pos1+100, $pos2+100), 0x0302, 0, 0) // получаем HWND по координатам и шлем ВСТАВИТЬ
END_IF

halt

Валерий Примаков

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Winapi
« Reply #6 on: December 17, 2015, 05:50:41 PM »
Значит через кликать.
Спасибо.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Winapi
« Reply #7 on: December 17, 2015, 06:00:21 PM »
Quote
HWND изменяется от одного файла, к другому. Более того, заново открытый тот же новый файл Блокнот, имеет новый HWND. Каждый раз кликать в окно и узнавать новый HWND?

помоему у кликермана придастаточно функционала для работы с текстовыми файлами (без использования текстовых редакторов).

Валерий Примаков

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Winapi
« Reply #8 on: December 17, 2015, 06:26:21 PM »
Понятно. У меня автоматизировать лайки на Фейсбук, мне кажется там без SENDMESSAGE не обойтись. Вот и изучаю.

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Winapi
« Reply #9 on: December 18, 2015, 12:21:18 PM »
с лайками в фб и вк есть одна беда - там для разных страниц используются разные картинки и цвета

Валерий Примаков

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Winapi
« Reply #10 on: December 18, 2015, 05:30:41 PM »
Это заметил уже. У меня там иф_пикча вообще не работает. Пока делаю поиск текста по ctrl_f, потом поиск по подствеченному через иф_пиксел. Пока вроде получается.