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