0

私の雇用主は、Office 2003 形式のファイルから Office 2007 形式への変換/修復を自動化するサードパーティ製ツール、Conveter Technology から OfficeConverter を購入しました。このツールは、Office 2003 と 2007 のフォーマット間での変換/マクロ/VBA コード要件の変更も高度に自動化します。

私の問題は、この変換中に、ツールが対象の Office 製品 (Excel など) を開いてから、対象のユーザー ファイル (Report.xls) を開いて、VBA / マクロ コードの変更要件を調べていることです。問題は、Excel ファイル コードが .OCX ファイルなどの外部ツールに依存している場合、このアクションを実行している PC にそのツールが存在しない場合、Excel はオブジェクトが持っているというメッセージをポップアップ表示することです。見つからず、誰かが現れて適切なボタンを手動でクリックしてダイアログ ボックスを閉じるまで、変換プロセス全体 (行にある何千ものファイル) を停止します。

私は、VB6 で小さな監視アプリケーションを作成すると (私は年を取り、スキルも同様です)、同じ PC に座ってこれらのダイアログ ボックスを監視し、特定のメッセージに応じて、SendMessage を介して適切なボタンをクリックできると考えました。 API 呼び出し。

問題は、SendMessage で実際にボタンを押すことができなかったことです。Return キーの値 (vbKeyReturn) または Space キー (vbKeySpace) を送信しようとしましたが、アクションがダイアログにつながることはありません。ボックスが閉じます。ダイアログボックスのどのボタンが有効になっているかに関係なく、タブにフォーカスを当てることができますが、それだけです。

私は SendKeys を使用しようとしましたが、信頼性がはるかに低く、私が見つけた現在のドキュメントでは強く推奨されていません。

助言がありますか?:)

4

3 に答える 3

4

ボタンの hWnd があり、マシンが無人である場合は、MouseEvent を使用してカーソルをボタンの上に移動し、クリックすることが簡単にできます。このサンプルには、ウィンドウ ハンドルだけが与えられた場合に面倒な作業を行うドロップイン対応のモジュールが含まれています。

http://vb.mvps.org/samples/MouseEvent

それ以外の場合、おそらく最も簡単な方法は、単に送信WM_LBUTTONDOWNしてWM_LBUTTONUP順番に送信することです。

編集: 「やりたいだけ」なら、Jim のアドバイスに従って、Gary Chanson のWindow Demonツールを試してみてください。

于 2009-06-11T02:05:06.887 に答える
2

Gary Chanson によるこのユーティリティ「Window Demon」を見てください。

Karl: 友達のことなんてすぐに忘れてしまうわ!

于 2009-06-11T02:32:37.563 に答える
1

AutoItをご覧になることをお勧めします。

このタスクに最適です。特定のテキストが表示されたウィンドウを探して、ボタンをクリックします。スタンドアロン アプリケーションとしてシステム トレイで実行されます。

于 2009-06-11T23:17:10.713 に答える