04-23-2014, 04:06 PM,
|
|||||
|
|||||
Win32API を利用するには?
Curl でWin32API を利用するにはどうすればいいですか?
具体的には、マックアドレスを取得するための「GetAdaptersInfo」を利用したいです。 Win32API を ActiveXObject として利用できたりするのでしょうか。 それとも、kernel.dll や、user.dll から、DLLインタフェースを個別に作成して利用するしかないのでしょうか。 |
|||||
04-24-2014, 02:10 PM,
(This post was last modified: 04-24-2014, 02:11 PM by hokada.)
|
|||||
|
|||||
RE: Win32API を利用するには?
DLL Interface を使えば、GetAdaptersInfo()、もしくはGetAdaptersAddresses()をコールできるはずです。
それ以外のMacアドレスを取得する方法としては、ipconfigコマンドをspawn-host-process を使って実行し、アウトプットをパースする方法もあると思います。 |
|||||
04-24-2014, 09:41 PM,
(This post was last modified: 04-25-2014, 12:57 PM by umemura.)
|
|||||
|
|||||
RE: Win32API を利用するには?
『ipconfigコマンドをspawn-host-process を使って実行』するには、
cmd.exe を spawn-host-process に渡せばよいでしょうか。 また、その際に、『アウトプットをパース』するために、 spawn-host-process の実行結果を取得するには どうすればよいですか? 下記のような方法で標準出力を取得しようと思いましたが、 「アプレット [9-121] - stdout が取得されていないか、既に開いています。の為、例外Errorで停止」 というエラーメッセージが出てしまいます。 Code: {import * from CURL.RUNTIME.HOST-PROCESS} |
|||||
04-25-2014, 01:50 PM,
(This post was last modified: 04-25-2014, 02:00 PM by umemura.)
|
|||||
|
|||||
RE: Win32API を利用するには?
下記サイト等を参考に、DLLインタフェースを、見よう見まねで作ってみましたが、
IP_ADAPTER_INFO が思ったように取得できず、お手上げ状態です。 ■MSDN http://msdn.microsoft.com/en-us/library/...s.85).aspx そもそも、MACアドレス(物理アドレス)は、IP_ADAPTER_INFO のどのフィールドに入ってくるのかさえ、 よくわかっていません・・・。 Code: {define-C-struct public IP_ADDR_STRING 型の定義の対応が間違っていますかね? C言語の知識がなく、とくに下記のような内容は、おもいっきり無視してます。 ■外部ライブラリ呼び出しに使うC構造体 http://developers.curlap.com/faq/49-faq-...07-52.html それとも、C++のDLLだからダメ、とかもありますかね? ■C++で作成したDLLについて http://developers.curlap.com/faq/48-faq-...-cdll.html |
|||||
04-28-2014, 12:43 PM,
(This post was last modified: 04-28-2014, 01:49 PM by umemura.)
|
|||||
|
|||||
RE: Win32API を利用するには?
下記のサイトのDLL宣言文のフォーマットを対象にした、
簡易なDLLインタフェースの自動生成用ロジックを組んでみました。 ■MSDN http://msdn.microsoft.com/en-us/library/...s.85).aspx DLLで定義される型が、Curl ではどんな型になるのかがわからないので、 もし知っている方がいらっしゃったら教えてください。 Code: ||DLLソースの種別 |
|||||
12-12-2016, 10:32 AM,
|
|||||
|
|||||
RE: Win32API を利用するには?
いつもお世話になっています。
私の方でもMACアドレスを取得したい件があったので確認してみました。 (04-24-2014, 09:41 PM)umemura Wrote: 「アプレット [9-121] - stdout が取得されていないか、既に開いています。の為、例外Errorで停止」こちらはパラメーターに誤りがあったようです。(ご提示の例だとread-stdout?がfalseになっていると思います) cmdプロセスを実行する部分を以下のように変更することでipconfig /allの結果が取得できました。 Code: def hp = {spawn-host-process cmd-exe-path, {StringArray "/A /Q /S /C ipconfig /all"}, read-stdout? = true, read-stderr? = true, suppress-console-window? = true }def tis = {hp.read-open-stdout character-encoding = "shift-jis"} cmdプロセスを使用するやり方の方がお手軽な感じがしますね。 |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
2 Guest(s)
2 Guest(s)