C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.1806 の関連記事表示

<< 0 >>
■1806  VC++で作成したコールバックDLLをc#で使用するには
□投稿者/ DLLをはじめて使う者 -(2007/03/06(Tue) 23:46:17)

    分類:[C# (Windows)] 

    はじめまして。
    DLLをはじめて使う者です。

    VC++でCBTProcをフックして、ウィンドウの状態を取得するDLLを
    作成しました。

    作成したDLL関数は全てCALLBACKです。
    それをC#で使用するにはどのように記述すればよいのでしょうか?

    以上、丸投げ感は否めませんが宜しくお願いします。

    以下VC++のソースです。

    #define STRICT
    #include <windows.h>
    #include <stdio.h>
    #include <HookDLL.h>

    #pragma data_seg(".sharedata")
    HHOOK hHookWnd = 0; // フックプロシージャハンドル
    HWND hWndSend = 0; // メッセージ送信先のウィンドウハンドル
    #pragma data_seg()

    // *************************************************************/
    // 関数名:DLLエントリポイント
    // *************************************************************/
    BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, LPVOID lpReserved)
    {
    (void)lpReserved;
    if(fdwReason==DLL_PROCESS_ATTACH) {
    hdll = hInst;
    }

    return TRUE;
    }

    // *************************************************************/
    // 関数名:コールバック処理
    // *************************************************************/
    LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    switch(nCode)
    {
    // ウィンドウが作成される
    case WM_USER+1:
    // 指定されたウィンドウへメッセージ送信
    PostMessage(hWndSend, WM_CREATEWINDOW, wParam, lParam);
    break;
    // ウィンドウがアクティブ化
    case WM_USER+2:
    // 指定されたウィンドウへメッセージ送信
    PostMessage(hWndSend, WM_ACTIVEWINDOW, wParam, lParam);
    break;
    // ウィンドウが破棄される
    case WM_USER+3:
    // 指定されたウィンドウへメッセージ送信
    PostMessage(hWndSend, WM_DESTROYWINDOW, wParam, lParam);
    break;
    }
    //次のフックを呼ぶ
    return CallNextHookEx(hHookWnd, nCode, wParam, lParam);
    }

    // *************************************************************/
    // 関数名:フックインストール
    // *************************************************************/
    void CALLBACK SetHook(HWND hWnd)
    {
    hHookWnd = SetWindowsHookEx(WH_CBT, CBTProc, hdll, 0);
    hWndSend = hWnd;
    }

    // *************************************************************/
    // 関数名:フックアンインストール
    // *************************************************************/
    void CALLBACK ReleaseHook()
    {
    UnhookWindowsHookEx(hHookWnd);
    }
親記事 /過去ログ10より / 関連記事表示
削除チェック/

■1812  Re[1]: VC++で作成したコールバックDLLをc#で使用するには
□投稿者/ 渋木宏明(ひどり) -(2007/03/07(Wed) 03:25:14)
>
    No1806 (DLLをはじめて使う者 さん) に返信
    > VC++でCBTProcをフックして、ウィンドウの状態を取得するDLLを
    > 作成しました。
    >
    > 作成したDLL関数は全てCALLBACKです。
    > それをC#で使用するにはどのように記述すればよいのでしょうか?

    ヘルプの関連項目って読みました?
    それほど難解なことは無いと思うんですが。

    アンマネージ DLL 関数の処理
    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpconConsumingUnmanagedDLLFunctions.asp

    > 以上、丸投げ感は否めませんが宜しくお願いします。

    まさかとは思いますが、どの関数を呼ぶべきかは自分で把握してますよね?
    おそらく、

    > // *************************************************************/
    > // 関数名:フックインストール
    > // *************************************************************/
    > void CALLBACK SetHook(HWND hWnd)
    > {
    > hHookWnd = SetWindowsHookEx(WH_CBT, CBTProc, hdll, 0);
    > hWndSend = hWnd;
    > }
    >
    > // *************************************************************/
    > // 関数名:フックアンインストール
    > // *************************************************************/
    > void CALLBACK ReleaseHook()
    > {
    > UnhookWindowsHookEx(hHookWnd);
    > }

    の2つを、C# のプログラムから呼びたいんですよね?
記事No.1806 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1838  Re[2]: VC++で作成したコールバックDLLをc#で使用するには
□投稿者/ DLLをはじめて使う者 -(2007/03/07(Wed) 12:52:17)
    渋木宏明(ひどり) さん

    アドバイスありがとうございます。
    早速教えていただいたURLを参考に挑戦してみます。

    わからなかったらまたよろしくお願いします。

    No1812 (渋木宏明(ひどり) さん) に返信
    > ■No1806 (DLLをはじめて使う者 さん) に返信
    >>VC++でCBTProcをフックして、ウィンドウの状態を取得するDLLを
    >>作成しました。
    >>
    >>作成したDLL関数は全てCALLBACKです。
    >>それをC#で使用するにはどのように記述すればよいのでしょうか?
    >
    > ヘルプの関連項目って読みました?
    > それほど難解なことは無いと思うんですが。
    >
    > アンマネージ DLL 関数の処理
    > http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpconConsumingUnmanagedDLLFunctions.asp
    >
    >>以上、丸投げ感は否めませんが宜しくお願いします。
    >
    > まさかとは思いますが、どの関数を呼ぶべきかは自分で把握してますよね?
    > おそらく、
    >
    >>// *************************************************************/
    >>// 関数名:フックインストール
    >>// *************************************************************/
    >>void CALLBACK SetHook(HWND hWnd)
    >>{
    >> hHookWnd = SetWindowsHookEx(WH_CBT, CBTProc, hdll, 0);
    >> hWndSend = hWnd;
    >>}
    >>
    >>// *************************************************************/
    >>// 関数名:フックアンインストール
    >>// *************************************************************/
    >>void CALLBACK ReleaseHook()
    >>{
    >> UnhookWindowsHookEx(hHookWnd);
    >>}
    >
    > の2つを、C# のプログラムから呼びたいんですよね?
    >
記事No.1806 のレス /過去ログ10より / 関連記事表示
削除チェック/

■2110  Re[3]: VC++で作成したコールバックDLLをc#で使用するには
□投稿者/ DLLをはじめて使う者 -(2007/03/19(Mon) 13:06:30)
    DLLをはじめて使う者です。

    さんざん調べたのですが、どうにもうまくできません。
    リファレンスを読んでもまったく理解できない状況です。
    (delegate云々だとは思うのですが、
    どうにも宣言の仕方、使用方法がわかりません。)

    すっぱりあきらめるのことはしたくないです。
    どうかコーディングの取っ掛かりを教えていただけないでしょうか?

    よろしくお願いします。
    以上。

    No1838 (DLLをはじめて使う者 さん) に返信
    > 渋木宏明(ひどり) さん
    >
    > アドバイスありがとうございます。
    > 早速教えていただいたURLを参考に挑戦してみます。
    >
    > わからなかったらまたよろしくお願いします。
    >
    > ■No1812 (渋木宏明(ひどり) さん) に返信
    >>■No1806 (DLLをはじめて使う者 さん) に返信
    > >>VC++でCBTProcをフックして、ウィンドウの状態を取得するDLLを
    > >>作成しました。
    > >>
    > >>作成したDLL関数は全てCALLBACKです。
    > >>それをC#で使用するにはどのように記述すればよいのでしょうか?
    >>
    >>ヘルプの関連項目って読みました?
    >>それほど難解なことは無いと思うんですが。
    >>
    >>アンマネージ DLL 関数の処理
    >>http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpconConsumingUnmanagedDLLFunctions.asp
    >>
    > >>以上、丸投げ感は否めませんが宜しくお願いします。
    >>
    >>まさかとは思いますが、どの関数を呼ぶべきかは自分で把握してますよね?
    >>おそらく、
    >>
    > >>// *************************************************************/
    > >>// 関数名:フックインストール
    > >>// *************************************************************/
    > >>void CALLBACK SetHook(HWND hWnd)
    > >>{
    > >> hHookWnd = SetWindowsHookEx(WH_CBT, CBTProc, hdll, 0);
    > >> hWndSend = hWnd;
    > >>}
    > >>
    > >>// *************************************************************/
    > >>// 関数名:フックアンインストール
    > >>// *************************************************************/
    > >>void CALLBACK ReleaseHook()
    > >>{
    > >> UnhookWindowsHookEx(hHookWnd);
    > >>}
    >>
    >>の2つを、C# のプログラムから呼びたいんですよね?
    >>
記事No.1806 のレス /過去ログ10より / 関連記事表示
削除チェック/

■2111  Re[4]: VC++で作成したコールバックDLLをc#で使用するには
□投稿者/ シャノン -(2007/03/19(Mon) 13:25:48)
>
    No2110 (DLLをはじめて使う者 さん) に返信
    > DLLをはじめて使う者です。
    >
    > さんざん調べたのですが、どうにもうまくできません。
    > リファレンスを読んでもまったく理解できない状況です。
    > (delegate云々だとは思うのですが、
    > どうにも宣言の仕方、使用方法がわかりません。)

    .NETのdelegateは、C++で言えば関数ポインタのようなものです。
    VC++ DLLをVC++ EXEから使う時は、引数に関数ポインタを渡しますか?
    そうでないなら、delegateは関係ありません。
記事No.1806 のレス /過去ログ10より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -