- ベストアンサー
Cで他のソフトを操作して多数のファイルの格式を変更する
Cで他のソフトを操作して多数のファイルの格式を変更する 問題:試験データA1.kdlをA1.csvに変更しようとする場合、あるソフト(例えばBB.exe)を使う。 このソフトは主に二つの作業、一つは変更前のファイルの読み取り「参照」というボッタン、もう一つは ファイル式変換用の「変更」というボッタン。一回は一つファイルしか変更できない。今は手元にたくさん 用変更のファイルがあって、A1.kdl~A100.kdl、Cコードで一回で全部自動的に変更できるような プログラムを作れませんかと考えてます。何方か分かれば教えてくださいませんか
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
変換ソフトですが、GUIしかないのでしょうか? COMオブジェクトを提供しているとか、コマンドラインでの 指定が可能とか、あるいはエンジン部のDLLを解放してる ような話は無いのでしょうか? あれば、それを使う方がよいでしょう。但し、CでCOMを扱う のはとても難しいので、Scriptにした方が賢明です。 仮にGUIしかないとします。 ファイル名を指定するテキストボックス、指令用のボタンは 普通はウィンドウです。(そうでないのもあります) そこで、これらのウィンドウを操作して、処理します。 (1)プログラムの起動 CreateProcess http://msdn.microsoft.com/ja-jp/library/cc429066.aspx (2)親ウィンドウの検索 FindWindowExまたはEnumWindows http://msdn.microsoft.com/ja-jp/library/cc410853.aspx http://msdn.microsoft.com/ja-jp/library/cc410851.aspx (3)子ウィンドウ(ボタンやテキストボックス) EnumChildWindows http://msdn.microsoft.com/ja-jp/library/cc410802.aspx (4)ウィンドウへのテキスト受け渡し SetWindowText、GetWindowText http://msdn.microsoft.com/ja-jp/library/cc411207.aspx http://msdn.microsoft.com/ja-jp/library/cc364815.aspx (5)ウィンドウへのメッセージ送信(クリックを演出) SendMessage http://msdn.microsoft.com/ja-jp/library/cc411022.aspx 以上のAPIを駆使すればGUIを操作したのと同じ効果を与えることが できるでしょう。一番大変なのはウィンドウを見つけるところですね。 ボタンやテキストボックスが親ウィンドウの直下(子)ではなく、 孫、ひ孫、…のように階層が深いところにある可能性も高いです。 ボタン表面(GetWindowTextで得られる)を見ながら探しましょう。 テキストボックスは探すのが難しいので、テストで見つけたら、その 階層とクラスを記録しておきましょう。
その他の回答 (1)
- yama1718
- ベストアンサー率41% (670/1618)
一番良いのはその BB.exe のソースを修正して連続のファイルを扱える様にする事ですけどね。 シェアウェアですが、そういうWindowsの操作を自動化するソフトがあり、以前の回答で紹介した事があります。 http://oshiete1.watch.impress.co.jp/qa5920797.html 私がこの「Triple-9」を使って操作を自動化するとしたら、このように操作の手順をプログラムしたらできそうです。 1.BB.exe を実行する。 2.ワイルドカード"A*.kdl"でファイル検索する 3.検索されたファイルを BB.exe のファイル名を選択する部分に入力する 4. BB.exe の[変更]ボタンを押す。 5.変換が終了するまで待つ(時間を固定にする,ソフトやファイルの挙動を監視する,など方法は色々) 6.次に見つかったファイルを探す 7.ファイルが見つかれば3.から繰り返し 8.ファイルが見つからなければ終了
お礼
迅速なご回答いただき、有難うございます。仰ったソフトはタダではないですね。
お礼
丁寧にお答えいただき、有難うございます。APIはあまり良く分からない、一応試してみます。