Как перебрать список и выполнить команды для всех элементов - PullRequest
2 голосов
/ 24 октября 2010

alt text

Я хочу создать авто-туннелер для Garena.Что в основном нужно сделать, так это перебрать все элементы в списке (справа - я думаю, что это именно то, что есть), щелкнуть правой кнопкой мыши и щелкнуть туннель на каждом из них.У меня есть только компилятор C со мной.Есть идеи, как это сделать?Какие вызовы API и т. Д.

РЕДАКТИРОВАТЬ: несколько уточнений, как я вижу, мой первоначальный вопрос был довольно расплывчатым.перепроектировать его.

Я хочу написать отдельное приложение, которое будет отправлять сообщения или щелчки мышью в окне. У меня сложилось впечатление, что это возможно.Я не прав?

Ответы [ 3 ]

2 голосов
/ 04 ноября 2010

Если вы готовы отказаться от использования C, вы можете (очень легко) внедрить решение для автоматизации кликов, используя c ++ ( windows apis ), python ( Оболочка для Windows Apis ), или просто загрузив AutoIt ( язык сценариев, специально разработанный для автоматизации задач ).

Я использовал все три метода (Python мой любимыйкак я уже писал, у меня была ОГРОМНАЯ обертка вокруг доступных методов), и все они прекрасно работают !!!

0 голосов
/ 29 октября 2010

Ну, если это стандартный элемент управления списком, вы можете использовать стандартные сообщения списка. В противном случае вам придется перепроектировать, как это работает. Вы можете использовать Spy ++, чтобы определить, какой это элемент управления.

Предполагая, что это элемент управления представлением списка, вы можете получить количество элементов в нем с помощью LVM_GETITEMCOUNT. Затем вам нужно вызвать команду «Туннель» для каждого элемента. Это сильно зависит от того, как реализован оконный процесс. Одним из возможных подходов может быть выбор каждого элемента (LVM_SETITEMSTATE), а затем отправка WM_COMMAND родителю элемента управления представлением списка с указанием идентификатора меню «Tunnel». Однако это деталь реализации, поэтому вам придется использовать Spy ++, чтобы понять это. Сначала вы должны увидеть, какие сообщения отправляются, когда вы делаете это вручную с помощью мыши, затем вы должны попытаться воспроизвести эти сообщения программно.

0 голосов
/ 24 октября 2010

Вы можете использовать комбинацию сообщений LB_GETCOUNT, LB_GETTEXTLEN и LB_GETTEXT.Следующий код Delphi перебирает все элементы списка:

  function GetAllListBoxItems(hWnd: HWND; slItems: TStrings): string;
  var
    sRetBuffer: string;
    i, x, y: Integer;
  begin
    x := SendMessage(hWnd, LB_GETCOUNT, 0, 0); // Gets the total number of items
    for i := 0 to x - 1 do begin
      y := SendMessage(hWnd, LB_GETTEXTLEN, i, 0);
      SetLength(sRetBuffer, y);
      SendMessage(hWnd, LB_GETTEXT, i, lParam(PChar(sRetBuffer) ) );
      slItems.Add(sRetBuffer);
    end;
  end;

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...