5

アプリケーションのテキストをキャプチャするためにコードを使用しています。

アプリケーションを起動すると、PCにテキストやファイルをコピーして貼り付けることができません。コードをループに保持しているため、クリップボードが1〜2秒ごとにクリアされるため、このエラーが発生する理由がわかります。 PCでアプリケーションを使用する場合、私とクライアントにとって大きな問題です。デスクトップクリップボードを使用するのではなく、アプリケーション専用の新しいクリップボードを作成できるか、または誰かが私の問題の解決策を提供できるかを知りたいです。コード私が使用しているのは

        try
        {
            IEnumerator enumerator;
            MainModule.StrData = "";
            try
            {
                enumerator = this.chkListbox_odin1.CheckedIndices.GetEnumerator();
                IntPtr parentWnd = FindWindow((null), cboWindows.Text);
                IntPtr mdiClientWnd = FindWindowEx(parentWnd, IntPtr.Zero, "MDIClient", "");
                IntPtr marketwatchWnd = FindWindowEx(mdiClientWnd, IntPtr.Zero, null, windowname);
                while (enumerator.MoveNext())
                {
                    object objectValue = enumerator.Current;
                    this.WindowText(marketwatchWnd);
                }
                //    System.Windows.Forms.SendKeys.SendWait("{ESC}");
                //  Application.DoEvents();
            }
            finally
            {

            }
            Clipboard.Clear();
        }
        catch (Exception exception1)
        {
           // MessageBox.Show(exception1.Message);
        }

これが私の問題のいくつかの画像です

アプリケーションの実行中にコピーできます。 ここに画像の説明を入力してください

でも貼り付けようとすると

貼り付けは強調表示されていません、 ここに画像の説明を入力してください

誰かが私を助けてくれたら、とても感謝しています。

前もって感謝します。

4

1 に答える 1

0

テキストをコピーしようとしているウィンドウを見つけた、またはウィンドウにフォーカスを合わせたら、SendKeysを使用してコピー操作を実行することになると思います。(現在のコードはクリップボードをクリアするだけで、クリップボードに何も配置したり、データを使用したりしていません)この質問で使用されている方法を調べてみてください。この方法では、クリップボードの使用をまったくスキップでき、ウィンドウフォーカスを変更する必要がないという追加の利点があります。これは、クリップボードを常にクリアするのと同じくらいエンドユーザーにとって問題になる可能性があります。(この部分では、SendKeysを使用してクリップボードに影響を与えることを前提としています。クリップボードは現在フォーカスされているウィンドウでのみ機能すると思います)

于 2013-02-22T12:53:49.363 に答える