NetMessageBufferSendを使うには


み〜ちゃん  2002-11-09 19:18:10  No: 2025

NetMessageBufferSendを使いたいと思っています。
NetMessageBufferSend自体の使い方はわかるのですが、使うためにusesなどに
何かを追加しないといけないのでしょうか?
それとも使えないのでしょうか?
環境 winXP + D6Prsonal


たかみちえ  URL  2002-11-09 21:44:46  No: 2026

APIの名前を検索文字列にして、
Delphi\Source  あたりを探してみる・・・というのが一般的な方法ですけど、
これは見つかりませんね・・・。
(Personalでも、主にAPIの定義をしてあるユニットだけは、ソースが公開されているようです)

  WinXPの検索はあまりあてにならないようなので、
別の検索ソフトなどを使ってみました。
  ただ、検索範囲を狭く取りすぎてしまったので、自分でも探してみてはどうでしょう?

  あと、これは正確な話ではないですけど、
C言語のヘッダファイルと同じ名前のものが多いようです。
  ヘッダファイルなら、Windowsフォルダなどにあると思うので、それも探してみては?


にしの  2002-11-09 21:56:23  No: 2027

関数の定義は、
function NetMessageBufferSend(
  servername, msgname, fromname: LPCWSTR:
  buf: PCHAR;
  buflen: DWORD;
): Long; stdcall;
だと思います。
これをinterfaceに用意して、
implementationに、
function NetMessageBufferSend; external 'netapi32.dll' Name 'NetMessageBufferSend';
とすれば使えると思います。

※あくまでも未確認です。この情報が正しいかどうかは、ご自身でご確認ください。


み〜ちゃん  2002-11-10 00:26:52  No: 2028

ありがとうございます。
webを検索しても見つからなかったので、ここに質問させていただきました。
にしのさんの内容をやって見ます。

でも、パソコン壊れたようなので、いつ試せるか、、、
午前中は使えてたのに、、、


み〜ちゃん  2002-11-11 02:50:30  No: 2029

なぜかパソコンが復旧しましたので、
にしのさんの言われるとおりやってみました。
しかし、'Byte'と'Char'には互換性が・・・のエラーが出ます。
なぜなのでしょうか?
発生する場所は、NetMessageBufferSend(nil,'To','み〜ちゃん',buff,buflen←■ここ■);
ちなみに変数を何も使用せず
NetMessageBufferSend(nil,'To','み〜ちゃん','testmessage',64);
とやってみましたが、メッセージが文字化けしてきちんと表示されませんでした。
そのため、試行錯誤の上、下のようにやったのですが、、、、
解決策を教えてください。

procedure TForm1.Button1Click(Sender: TObject);
var
    msg:string;
    buff:PBYTE;
    buflen:DWORD;

begin
    msg:=memo1.Text;
    buflen:=length(msg)*2;
    getmem(buff, buflen+1);
    stringtowidechar(msg, LPWSTR(buff), buflen);
    NetMessageBufferSend(nil,'To','み〜ちゃん',buff,buflen);
    freemem(buff,buflen+1);
end;


aiko  2002-11-11 19:17:55  No: 2030

bufはpchar型では、ないですよ。
LPBYTE型です。

ヘルプ見ただけですけど


み〜ちゃん  2002-11-15 04:38:28  No: 2031

出来たことは出来たのですが、文字化けします。
WEBを見るとUnicodeがどうこう、らしいのですが
どのように改善すればいいのでしょうか?

procedure TForm1.Button1Click(Sender: TObject);
var
    buff:PCHAR;
    buflen:DWORD;

begin
    buff := 'test message';
    buflen:=length(buff)*2;
    NetMessageBufferSend(nil,'toadd','み〜ちゃん',buff,buflen);
end;


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加