プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります

今、SendKeysを使ってAutoCad LTを操作するプログラムを開発中です
そこで困ったのがAutoCadが前面に開いていないと上手くいかないことです

自分で開くときは良いのですが、もともと開いていたAutoCadが最小になっていたりすると
上手くいきません
こういう時はどうしたら良いか分かりましたら教えてください

呼び出しは
AppActivate "Autodesk AutoCAD" '(AutoCAD のバージョンが2014以降はこちら)
  SendKeys Chr(27) '...ESC Code
SendKeys "filedia 0" & Chr(13) '...ダイアログを出ないようにする

ちなみに、クラス名は
  strClassName = "AfxMDIFrame140u" '...AutocadLT


以上、よろしくお願いいたします

A 回答 (1件)

こんにちは



きちんと試してはいないので、確実ではありませんけれど・・

WinAPIを利用して、以下の手順でできませんか?
1)FindWindowでウィンドウのハンドルを取得
 (クラス名がわかっているとのことですので、直接取得できると思います)
2)ShowWindowでSW_SHOWNORMAL等で表示
 (最小化されている場合は、これがないと表示状態になりません)
3)SetForegroundWindowで最前面に表示

※ 最小化されていなければ、2)は省いてもOKと思います。
各APIの簡単な説明は以下に。
(検索すれば、いろいろ情報は見つかるはずですので、お調べください)
https://excel.syogyoumujou.com/memorandum/get_hw …
https://qiita.com/ymd65536-ms/items/21f5b40efca9 …
https://dobon.net/vb/dotnet/process/appactivate. …

※ 若干旧い解説ページなどがあるかも知れませんけれど、64ビット環境の場合は、APIの関数宣言や変数をPtrSafeで宣言する必要がありますので、ご注意ください。
https://learn.microsoft.com/ja-jp/office/vba/lan …
    • good
    • 0
この回答へのお礼

こんにちは
いつもありがとうございます

Excel64Bit版になっていろいろなことに直面しています
答えをいただき本当にありがとうございます
早速試してみます

まだまだ質問が出そうなので、またよろしくお願いいたします
まずはお礼まで

お礼日時:2023/07/21 10:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!