【解決方法】ASP.NET アプリケーションが IIS でホストされている場合、catia への Sendkeys が機能しない

プログラミングQA


私はasp.netで開発されたアプリケーションを持っています。 ここでは、アプリケーションから Catia アプリケーション (サーバー マシン) にデータを送信しようとしています。 Visual Studio 開発サーバーでは正常に動作していましたが、IIS (サーバー マシン) でホストされているアプリケーションから実行している間はアクセスできませんでした。 以下は私のコードです:

C#
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "FindWindowA", ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Ansi, SetLastError = true)]



        public static extern long FindWindow(StringBuilder lpClassName, StringBuilder lpWindowName);
        F_hwnd = 0; //Reset Form Handler 
            r_count = 0; //Reset retry count

            if (myCommand == "STL Import") //because the window name is Import
            {
                myCommand = "Import";
            }

    StringBuilder mc = new StringBuilder(myCommand);
    catiaCore.GetSetCatia.StartCommand(myCommand);


            //Searching for Import window 
    while (!(F_hwnd != 0 || (r_count == Retry_fail)))
            {
                F_hwnd = FindWindow(null, mc);//get Import window handler – If Import window is found F_hwnd!=0

        catiaCore.GetSetCatia.ActiveWindow.ActiveViewer.Update();//!
                r_count = r_count + 1;
            }

私が試したこと:

User32.dll ファイルがある Windows/System32 フォルダにネットワーク サービス、IUSER および IISIUSERS のフル アクセス権を追加しようとしましたが、多くのエラーが表示されました。 最後に、これらのユーザーは何らかの形で完全なアクセス権を持っているように見えます。 また、Catia がインストールされ、アプリケーション プールの設定で 32 ビット アプリケーションを有効にしたフォルダにフル アクセス権を追加しましたが、結果がありません。

解決策 1

高く評価されている CodeProject メンバーの 1 人による提案がヒントになるかもしれません。 IIS でホストされている場合、Sendkeys が機能しない[^]

解決策 2

うーん… SendKeys は ASP.NET アプリケーションでは機能しません。 そのコードは、クライアントではなくサーバー上で完全に実行されます。 SendKeys を使用すると、クライアントではなく、サーバー上の存在しないウィンドウにキーストロークが送信されます。

コードを書いたとき、サーバーとクライアントは同じマシンで実行されていたため、「機能している」という錯覚を与えました。 コードを本番サーバーにデプロイすると、コードはクライアントとは別にサーバー上で実行されます。

基本的に、SendKeys を使用することはできません。また、使用しようとしている理由についても言及していません。 クライアントで実行されているアプリケーションを、サーバー上の Web アプリ コードから “リモート コントロール” することはできません。また、ブラウザーで実行されている JavaScript コードから実行することもできません。

コメント

タイトルとURLをコピーしました