0

現在、このコードを実行してBusiness Vision(コードにアクセスできない他の誰かによって作成されたアプリケーション)を開きます。

ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(BusinessVisionPath);
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();

StreamReader myStreamReader = myProcess.StandardOutput;
Boolean done = false;
while (done == false)
{
    int s = myStreamReader.Read();
    Console.WriteLine(s);
    if (s == -1)
    {
        done = true;
        Process IProcess = new Process();
        ProcessStartInfo IProcessStartInfo = new ProcessStartInfo(QuickPrinterPath);
        IProcessStartInfo.WindowStyle = ProcessWindowStyle.Maximized;
        IProcess.StartInfo = IProcessStartInfo;
        IProcess.Start();
    }

}
myProcess.Close();
Console.ReadLine();

とにかく

このコードは現在、BusinessVisionを閉じるときにプリンタプログラムを開きます。

質問

  1. BV内に特定のメッセージボックスが表示されたときに(可能であれば)プログラムを開くにはどうすればよいですか(「請求書を印刷してもよろしいですか?」)
  2. アプリケーションからデータを取得することは可能ですか?実行中に解析できる生データなどですか?
4

5 に答える 5

1

MicrosoftのUIオートメーションを調べたいと思うかもしれません。これにより、他のアプリケーションのウィンドウからデータを読み取り、プログラムで他のアプリケーションのUIを操作できます。私は数年前にこれを使用して、私たちが持っていた古いVB6アプリでの一連のテストを自動化しました。私のコードは、アプリケーションのメインウィンドウを見つけて、興味のあるメニュー/コントロールなどにドリルダウンします。そこから、クリックやキーストロークを自動化し、さまざまなラベルから必要なテキスト/データを取得できます。ウィンドウズ。次に、データを.NETアプリにプルして、必要な処理を実行できます。

あなたの場合、BVプログラムを常に監視し、メッセージボックスが表示されたことを検出し、それに応じてプログラムを起動するために、常に実行されているアプリ(Windowsサービスなど)が必要になります。

理解して機能させるにはかなりの作業が必要ですが、非常に強力です。ウィンドウの視覚的な階層を閲覧し、利用可能な情報の種類を簡単に確認できる無料のアプリがあります。MicrosoftのUISpyをチェックしてください:

http://msdn.microsoft.com/en-us/library/ms727247.aspx

始めるためのその他のリンクは次のとおりです。

http://en.wikipedia.org/wiki/Microsoft_UI_Automation

http://msdn.microsoft.com/en-us/library/ms747327.aspx

于 2012-04-11T18:04:32.643 に答える
1

承認された方法の1つを使用してデータにアクセスしてみてください。

Sage BusinessVisionの場合、次のようになります。

  1. アプリケーションから手動で利用可能なcsvとしてデータをインポートおよびエクスポートします。
  2. Pervasiveデータベースに直接アクセスします。このドキュメントは、BusinessVision DatabaseStructureReference.chmというファイルのアプリケーションのヘルプセクションで入手できます。
  3. Sageパートナーが利用できるAPI。

1が最も簡単な方法であり、自動化されるものはありません。
2はより困難ですが、基礎となるデータにライブでアクセスできます。
3はあなたが支払うこととあなたがセージによる要件を満たすことを要求します。

2.といくつかのUIオートメーションを組み合わせると、特定のUIイベントでトリガーを作成し、データベースからのデータで満たされた新しいウィンドウを作成できます。

UIオートメーションは、アプリケーションの新しいバージョンに対して非常に脆弱であり、毎回確実に作り直す必要があることに注意してください。

于 2013-07-08T22:00:46.000 に答える
0

あなたはいつでも逆コンパイラを試すことができます: )dotPeek

于 2012-04-11T17:54:45.907 に答える
0
  1. 推奨するかどうかはわかりませんが、トップレベルのウィンドウを列挙し、そのうちの1つがポップアップボックスと一致するかどうかを確認することができます。
  2. アプリケーションが作成するファイルまたはデータベースエントリを除いて、アプリケーションのバイナリパッチを適用する場合を除いて、私が認識していることではありません。
于 2012-04-11T17:50:32.770 に答える
0

ターゲットが.NETexeである場合、おそらく開発者はずさんで、クラスとメソッドを公開していました。その場合は、アプリケーションのDLL依存関係であるかのようにexeをロードし、それらのメソッドを直接呼び出します。

于 2012-04-11T17:52:35.670 に答える