世の中には、ソース コードが公開されていない個別の便利なプログラムが数多く存在し、その中には互いに美しく統合できるものもあります。唯一の問題は、Windows 7 でさまざまなプログラムが相互に連携できるようにする方法がわからないことです。
私は C++/C#/XAML を理解しており、コマンド ラインを使用してプログラムに起動引数を渡す方法や、バッチ ファイルを作成する方法も理解しています... しかし、プログラムの実行後、手動以外で制御するにはどうすればよいでしょうか?
マウスの動きやクリックなどの Windows 入力を処理する方法も知っていますが、これではオペレーティング システムとの直接的なやり取りしかできず、その時点で開いている特定のプログラムとのやり取りはできません。
他の作業をしながら、個々のプログラムに入力を渡せるようにしたいです。
私が解決しようとしている問題の例は次のとおりです。
私は「メンバー抽出「私のサイトのメンバーの連絡先情報を抽出します。ただし、このプログラムはGUIからのみ制御でき、データをエクスポートする機能はまだありません。(そのため、電子メール、電話番号などの各情報は、クリップボードに1つずつコピーし、新しい "マイクロソフトエクセル"書類)。
情報をコピーして整理された形で保存したら、そのデータを1つずつ複数の新しい「連絡先プロフィール「によって生成された」ユニバーサルコンタクトマネージャー「の延長 「Google Chrome ウェブブラウザ」
- これらすべては、他の作業をしている間にバックグラウンドで実行できる何らかのスクリプトによって自動的に実行される必要があります。*
どうすればできるのでしょうか?
必要だと思うのは複数の仮想クリップボードですが、他には何が必要でしょうか?
答え1
手作業でできるなら、マクロソフトを使えば簡単に自動化できます。私が選んだ武器はオートホットキー、 具体的にはオートホットキー_L。
ドキュメンテーション
あなたの例に基づくと、次のものが役立ちます:
たとえば、スクリプトのロジックは次のようになります*:
*小さなエラーがあるかもしれませんが、要点は理解できます。
;Note: find Control and Window names using AutoIt3 Window Spy
Name := []
Email := []
;etc...
members = 100
while (members > 0)
{
Clipboard =
ControlSend, MemberExtrControl, ^a^c, MemberExtrWindow
ClipWait
Name.Insert(Clipboard)
Clipboard =
ControlSend, MemberExtrControl, Tab^a^c, MemberExtrWindow
Clipwait
Email.Insert(Clipboard)
;etc...
members--
}
index = 1
Loop % Names.MaxIndex()
{
name := Name.Remove(index)
email := Email.Remove(index)
;etc...
ControlSend, ContactMgrControl, %name%, ContactMgrWindow
ControlSend, ContactMgrControl, Tab%email%, ContactMgrWindow
;etc...
index++
}