Каковы параметры Ruby Win32API | Как передать нулевой указатель?
Я знаю следующее:
'L'
- Долго'P'
- указатель'I'
- целое число'V'
- ПустотаМоя проблема в том, что я не могу передать нулевой указатель при выполнении вызова API. Например.:['L', 'P', 'L'] -> api.call(0, nil, 0) :: ArgumentError: Null pointer given
, Мой вопрос: есть ли еще типы параметров, о которых я не знаю, и что я должен сделать, чтобы передать нулевой указатель в качестве параметра метода?
Я искал в Интернете нативные примеры программирования на Ruby для приложений на основе WinForms. Я рассмотрел дополнение .NET к Ruby, известное как IronRuby, для простоты в кодировании (пытаясь избежать wxRuby, а также вентилятора .NET), но сначала я хочу сначала иметь возможность явно кодировать на чистом Ruby.
Теперь я успешно смог реализовать большинство протестированных мной адресов в объекте user32.dll, таких как:
api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
# or
api = Win32API.new('user32', 'MessageBeep', ['L'], 'I')
..но я не могу выполнитьCreateWindow
Или жеCreateWindowEx
без нулевых параметров. Если это будет полезно, я нашел, как это сделать в PythonВот (под WinAPI).
Использование Win32API: msdn.microsoft.com/en-us/library/ff381397(v=VS.85).aspx
[РЕДАКТИРОВАТЬ]
Ну, я думаю, что, возможно, только что решил свою проблему с этой ссылкой(предупреждение: может содержать недопустимое содержание): [ссылка]
Я больше использовал этот форум в качестве ссылки и немного повозился с собой:createwindow = Win32API.new("user32","CreateWindowEx",'lpplllllllll','l')
showwindow = Win32API.new('user32','ShowWindow',%w(l l),'l')
hWND = createwindow.call((0x00000100|0x00000200),"static", "Window Title",((0x4000000|0x80000000|0)|0x02000000),0,0,600,400,0,0,0,0)
showwindow(hWND, 1)
Единственное, что происходит после отображения «окна», это сбой ... и это могло произойти из-за некоторой неправильной обработки, но я рад, что заставил его работать (немного)! Просто надо разобраться с остальными ...