![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Добрый день.
Пытаюсь научиться пользоваться Win32::Api. Но чего то ничего не выходит. Раздобыл доки на win32api нашел в них функцию попроще. вот такую (выдернул из справочника Win32api) ********** Функция SwapMouseButton Описание: function SwapMouseButton(Swap: Bool): Bool Изменяет на обpатное или восстанавливает назначение левой и пpавой кнопок мыши в соответствии со значением Swap. Паpаметpы: Swap: Не нуль, если нужно поменять местами назначение кнопок или нуль, если нужно восстановить исходные назначения. Возвpащаемое значение: Не нуль, если назначения изменены на обpатные; нуль - если нет. функция находится в файле user32.dll ********** пытаюсь теперь из perl переключить клавиши мыши. вот таким вот образом.
Что делает $function вроде понятно. При помощи модуля Win32::Api вызывает внешнюю функцию. Но непонятно зачем $return? Ну и весь код не рабочий получился. Пишет что "...Undefined subroutine &main::SwapMouseButton..." Может справочник по API г... ![]() Пожалуйста приведите пример использования модуля Win32::Api, чтоб он чего нибудь простенькое при помощи функций Win32API делал. Ну например время узнавал, ну или кнопки мыши переключал, как я пытался сделать или может еще чего ![]() Спасибо. |
|||
|
||||
shamber |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 1 Всего: 18 |
Для начала попробуйте почитать мануал повнимательнее и сравните свой код с этим
Если не замечаете, подсказки: 1. кавычки 2. параметры функции Вот исправленный код.
|
||||
|
|||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 5 Всего: 27 |
Вот небольшой кусок из моего скрипта, если поможет:
Это немного другой способ, в отличие от того, который указал shamber. Но оба работают и описаны в документации. Это сообщение отредактировал(а) KSURi - 22.11.2007, 17:41 -------------------- Died at Life.pl line 21 |
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Большое спасибо за ответы.
В принципе я попробовал, понял, что модуль работает. Правда он выдает какие то ошибки, (я пробовал с функцией, которая переключает клавиши мыши туда-сюда). Но клавиши при этом ПЕРЕКЛЮЧАЮТСЯ. Что меня вполне удовлетворило ![]() но теперь вопросов еще больше... ![]() Вот например. Функция my $FindWindow = Win32::API -> Import('user32', 'HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)'); требует параметрами имя класса, и имя окна. Мне допустим, нужно закрыть окно интернет-эксплойера. Как узнать (в каких справочниках это написано?) какого класса это окно и какое у него имя? Ну по последнему примеру у понял, что закрыть его можно функцией SendMessage ![]() А какой функцией можно воспользоваться, чтобы получился аналог - "открыть текстовый файл". Ну чтобы не закрывать окно каждый раз, а только чтобы текст в окне эксплоера менялся? Спасибо. |
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
И еще вопросик от начинающего (и запутавшегося).
читаю вот всякую литературу, в которой написано примерно следующее. Что мол, каждый язык программирования, конечно заточен для своих нужд, ну т.е. в Perl (например, очень удобно работать со строками) а для C++ уже написаны куча классов, которыми бери и пользуйся, не надо сочинять свои. вот кстати и WINAPI тоже вроде как на С++ написаны. Ну и тут же я читаю, что в принципе на любом языке (будь то перл или Си) можно написать все что угодно. (в принципе модуль ТК для перл и подтверждает то, что вот можно и окошки рисовать). Ну а как это все самому написать? Вот например (отбросим окна - там все сложнее). Ну вот обыкновенная консоль. Хочу чтобы вывод в нее осуществлялся зеленым цветом. Как это сделать не используя модули ? как самому описать то, что вывод на консоль осуществлять зеленым цветом? Какую книгу не откроешь - там переменные, массивы да циклы + набор уже написанных функций. Все. Но это же уже укрупненные структуры. Смотрел на модуль Win32::Console - там к этому модулю еще идут и console.dll, console.ext. Про DLL в книгах про перл чего то вообще не пишут (или не там читаю?). Как средствами перл написать DLL? Опишите пожалуйста эту "вертикаль" - от зеленых букв в консоли до того как это описать. На чем написан сам Перл?... Чего то никак я структуру от красивого оконного интерфейса до машинного кода понять не могу... может чего почитать посоветуете? |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 1 Всего: 18 |
Уважаемый
burakov, по поводу ваших впоросов, аля Ну а как это все самому написать? Вам уже давно дали дельный совет. Читайте литературу..... чем больше тем лучше. и задавайте конкретные вопросы. А так вы ничего не добьетесь ИМХО. |
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
На счет литературы я согласен.
За некорректные вопросы я извиняюсь... (попытка не пытка)... Вопрос какую литературу читать??? Так можно всю жизнь читать, читать и вовсе не понять, то чего хочется узнать ... Тем более что хочется читать по-русски ![]() Поэтому хочется читать еще и эффективно... ![]() В какой книге по перл описано создание DLL на перл? Еще раз извиняюсь за свои некорректные вопросы. Всем спасибо. ![]() |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 5 Всего: 27 |
Есть много программ, позволяющих узнавать служебную информацию об окнах. Одна из таких, WindowSpy вроде, если память не изменяет, входит в поставку Microsoft Visual Studio. -------------------- Died at Life.pl line 21 |
|||
|
||||
aksined |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 26.12.2005 Репутация: 1 Всего: 1 |
Привет
Думаю, ты не с того конца начал. На перле можно много чего сделать. Но написание приложений под винапи, по-моему, уже изыск. Так же, как и написание пользовательского ГУИ средствами ТК. Есть более удобные средства для этого. Это мое мнение и просьба сильно не бить. Могу посоветовать книгу Т. Кристиансена и Н. Торкингтона "Perl: библиотека программиста". Там есть рецепт по выводу на консоль другим цветом. Не уверен, правда, что этот модуль реализован для Windows. Не очень понятно желание писать без модулей. Для успешного использования устройства ведь необязательно писать собственный драйвер. Это сообщение отредактировал(а) aksined - 5.12.2007, 18:31 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |