はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。
杉田です。
Qt アプリケーションのテストならば Squish が最もよいです。
https://www.froglogic.com/squish/gui-testing/
2016/09/06 20:58、梅澤智実 umez5555@gmail.com のメール:
はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。 _______________________________________________ Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
梅澤です。
お返事ありがとうございます。
Squish、確かに良さそうですね。Qtへの対応が明確にうたわれていますし。
・自動制御のルーチンを記述して、エンドユーザーに配布することが出来るのか。 (テストツールと聞くと、開発者が自分の会社で使うものをイメージしてしまうので) ・価格はいくらか。 という点を含め、検討してみます。
ありがとうございました。
2016年9月7日 1:20 Kenji Sugita kenji@j04.itscom.net:
杉田です。
Qt アプリケーションのテストならば Squish が最もよいです。
https://www.froglogic.com/squish/gui-testing/
2016/09/06 20:58、梅澤智実 umez5555@gmail.com のメール:
はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。 _______________________________________________ Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
杉田です。
2016/09/07 16:11、梅澤智実 umez5555@gmail.com のメール:
梅澤です。
お返事ありがとうございます。
Squish、確かに良さそうですね。Qtへの対応が明確にうたわれていますし。
・自動制御のルーチンを記述して、エンドユーザーに配布することが出来るのか。 (テストツールと聞くと、開発者が自分の会社で使うものをイメージしてしまうので)
Qt アプリケーションをテストするためのツールでこのような目的には使えません。
・価格はいくらか。 という点を含め、検討してみます。
ありがとうございました。
2016年9月7日 1:20 Kenji Sugita kenji@j04.itscom.net:
杉田です。
Qt アプリケーションのテストならば Squish が最もよいです。
https://www.froglogic.com/squish/gui-testing/
2016/09/06 20:58、梅澤智実 umez5555@gmail.com のメール:
はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。 _______________________________________________ Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
こんにちは、梅澤です。
最初のメールが分かりづらかったようで申し訳ないのですが、目的は開発環境のテストではなく、
『エンドユーザーが使うあるアプリケーション(Qtで作成されたウィンドウを持つ)の入力処理の自動化』
なのです。
Squishのようなソフトが存在するなら、別のプロセスからQtのテキストボックス領域に入力したり、ボタンを押したりする方法があると思うのですが、何か他に上記の目的で使えそうなソフトはございませんでしょうか。
あるいは、Qtの何らかの機能に関して調査してみれば、糸口はつかめるでしょうか。
2016年9月7日 23:07 Kenji Sugita kenji@j04.itscom.net:
杉田です。
2016/09/07 16:11、梅澤智実 umez5555@gmail.com のメール:
梅澤です。
お返事ありがとうございます。
Squish、確かに良さそうですね。Qtへの対応が明確にうたわれていますし。
・自動制御のルーチンを記述して、エンドユーザーに配布することが出来るのか。 (テストツールと聞くと、開発者が自分の会社で使うものをイメージしてしまうので)
Qt アプリケーションをテストするためのツールでこのような目的には使えません。
・価格はいくらか。 という点を含め、検討してみます。
ありがとうございました。
2016年9月7日 1:20 Kenji Sugita kenji@j04.itscom.net:
杉田です。
Qt アプリケーションのテストならば Squish が最もよいです。
https://www.froglogic.com/squish/gui-testing/
2016/09/06 20:58、梅澤智実 umez5555@gmail.com のメール:
はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。 _______________________________________________ Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
hermit4です。
既に調査されていらっしゃる通りQt5ではネイディブのコントロールを使わず、独自実装 されており、一般的なWindowsアプリケーション向けのツールによる操作はできないか と思います。
QMLについては試していませんが、Qt5のWidgetsアプリケーションですと環境変数 QT_USE_NATIVE_WINDOWS を使えばQPushButton等もネイティブのウィンドウハ ンドル(HWND)が割り当てられるため、WindowsのAPIを使って座標やウィンドウタイト ルの取得はできますが、やはり標準コントロールが使われるわけではないようで、 Windows APIのGetClassNameで取得できる値はQt5QWindowIconのままでした (Windows7, Qt5.6 + Visual Studio 2013環境)。
このため、ボタンとしてのクリックという形でのイベントは送付できませんでしたが、 GetWindowTextで取得できるWindowTitleは、QtのobjectNameが利用されるような ので、それを利用してボタンのHWNDを特定し、WindowsのAPIを利用して
PostMessage(hwnd,WM_KEYDOWN,VK_RETURN,0); PostMessage(hwnd,WM_KEYUP,VK_RETURN,0);
としてみたところ、ボタン上でEnterを押したときの動作は再現できたので、キーの入力や マウス操作など簡単な操作ならWindows APIでイベントを送り込むことができそうです。
変化した文字を取得できるのかについては把握できていません。もしかするとOpenCV 等で画像解析などしないと厳しいかもしれません。
まずはMSDNで、
GetWindow GetWindowTextLength GetWindowText WideCharToMultiByte EnumWindows EnumChildWindows SendMessage PostMessage
あたりを調べて色々試してみると良いのではないでしょうか。
また、Qtのコード自体はオープンソースになっていますので、対象のアプリケーションが LGPLを採用しているのであればQtライブラリ側に手を入れてしまうという方法も残されて いるかと思います。ダイアログの自動化という目的に対して大がかりすぎる気もしますので、 あまりお勧めはしませんが。
Windows APIを利用して送るイベントを調べたり、Qtのコードに手をいれるより、アプリケー ション側のコードに手を入れる方が遥かに簡単ですから、個人的にはもう一度メーカー側と よく協議してみる方が良いのではないかと思います。
2016年9月8日 10:15 梅澤智実 umez5555@gmail.com:
こんにちは、梅澤です。
最初のメールが分かりづらかったようで申し訳ないのですが、目的は開発環境のテストではなく、
『エンドユーザーが使うあるアプリケーション(Qtで作成されたウィンドウを持つ)の入力処理の自動化』
なのです。
Squishのようなソフトが存在するなら、別のプロセスからQtのテキストボックス領域に入力したり、ボタンを押したりする方法があると思うのですが、何か他に上記の目的で使えそうなソフトはございませんでしょうか。
あるいは、Qtの何らかの機能に関して調査してみれば、糸口はつかめるでしょうか。
2016年9月7日 23:07 Kenji Sugita kenji@j04.itscom.net:
杉田です。
2016/09/07 16:11、梅澤智実 umez5555@gmail.com のメール:
梅澤です。
お返事ありがとうございます。
Squish、確かに良さそうですね。Qtへの対応が明確にうたわれていますし。
・自動制御のルーチンを記述して、エンドユーザーに配布することが出来るのか。 (テストツールと聞くと、開発者が自分の会社で使うものをイメージしてしまうので)
Qt アプリケーションをテストするためのツールでこのような目的には使えません。
・価格はいくらか。 という点を含め、検討してみます。
ありがとうございました。
2016年9月7日 1:20 Kenji Sugita kenji@j04.itscom.net:
杉田です。
Qt アプリケーションのテストならば Squish が最もよいです。
https://www.froglogic.com/squish/gui-testing/
2016/09/06 20:58、梅澤智実 umez5555@gmail.com のメール:
はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。 _______________________________________________ Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
お返事ありがとうございます。
テストしていただき、申し訳ありません。 こちらでも、環境変数に QT_USE_NATIVE_WINDOWS = 1をセットすることで、各Widgitが独立したハンドルを持つ事が確認できました。 また、 ・テキストボックスへの文字入力 WM_KEYDOWN, WM_KEYUPあるいはWM_CHARのメッセージ送信 ・ボタンのクリック WM_LBUTTONDOWN, WM_LBUTTONUPのメッセージ送信 で実現できること確認できました。
(Qtのバージョンにもよるかもしれませんが、少なくともWin7 32bitでQt5QWindowIconの子供(?)の各Widgitに上記のことはできました)
当然かもしれませんが、テキストボックスのWM_GETTEXTでの文字列取得は出来ませんでした。 WM_GETTEXTでは、各Widgitに付けている名前 (例えば、"progressBarWindow"、”connectButtonWindow”など)が返されます。 このあたりは、もう少し工夫が必要かもしれません。
また、Visul Studio付属の Spy++でメッセージをみてみたのですが、各Widgitが、Windowハンドルを持つ状態であっても、各WidgitとはWindowsメッセージのやり取りは発生していませんでした。 Qt5QWindowIconとのWindowsメッセージのやり取りとなっておりました。
Qtライブラリのソースの入手は、ちょっと私には荷が重いかもしれません。
メーカー側との再度のやりとりは、上司と相談してみます。
本当にありがとうございました。
2016年9月8日 12:42 Shingo Ishida hermit4loop@gmail.com:
hermit4です。
既に調査されていらっしゃる通りQt5ではネイディブのコントロールを使わず、独自実装 されており、一般的なWindowsアプリケーション向けのツールによる操作はできないか と思います。
QMLについては試していませんが、Qt5のWidgetsアプリケーションですと環境変数 QT_USE_NATIVE_WINDOWS を使えばQPushButton等もネイティブのウィンドウハ ンドル(HWND)が割り当てられるため、WindowsのAPIを使って座標やウィンドウタイト ルの取得はできますが、やはり標準コントロールが使われるわけではないようで、 Windows APIのGetClassNameで取得できる値はQt5QWindowIconのままでした (Windows7, Qt5.6 + Visual Studio 2013環境)。
このため、ボタンとしてのクリックという形でのイベントは送付できませんでしたが、 GetWindowTextで取得できるWindowTitleは、QtのobjectNameが利用されるような ので、それを利用してボタンのHWNDを特定し、WindowsのAPIを利用して
PostMessage(hwnd,WM_KEYDOWN,VK_RETURN,0); PostMessage(hwnd,WM_KEYUP,VK_RETURN,0);
としてみたところ、ボタン上でEnterを押したときの動作は再現できたので、キーの入力や マウス操作など簡単な操作ならWindows APIでイベントを送り込むことができそうです。
変化した文字を取得できるのかについては把握できていません。もしかするとOpenCV 等で画像解析などしないと厳しいかもしれません。
まずはMSDNで、
GetWindow GetWindowTextLength GetWindowText WideCharToMultiByte EnumWindows EnumChildWindows SendMessage PostMessage
あたりを調べて色々試してみると良いのではないでしょうか。
また、Qtのコード自体はオープンソースになっていますので、対象のアプリケーションが LGPLを採用しているのであればQtライブラリ側に手を入れてしまうという方法も残されて いるかと思います。ダイアログの自動化という目的に対して大がかりすぎる気もしますので、 あまりお勧めはしませんが。
Windows APIを利用して送るイベントを調べたり、Qtのコードに手をいれるより、アプリケー ション側のコードに手を入れる方が遥かに簡単ですから、個人的にはもう一度メーカー側と よく協議してみる方が良いのではないかと思います。
2016年9月8日 10:15 梅澤智実 umez5555@gmail.com:
こんにちは、梅澤です。
最初のメールが分かりづらかったようで申し訳ないのですが、目的は開発環境のテストではなく、
『エンドユーザーが使うあるアプリケーション(Qtで作成されたウィンドウを持つ)の入力処理の自動化』
なのです。
Squishのようなソフトが存在するなら、別のプロセスからQtのテキストボックス領域に入力したり、ボタンを押したりする方法があると思うのですが、何か他に上記の目的で使えそうなソフトはございませんでしょうか。
あるいは、Qtの何らかの機能に関して調査してみれば、糸口はつかめるでしょうか。
2016年9月7日 23:07 Kenji Sugita kenji@j04.itscom.net:
杉田です。
2016/09/07 16:11、梅澤智実 umez5555@gmail.com のメール:
梅澤です。
お返事ありがとうございます。
Squish、確かに良さそうですね。Qtへの対応が明確にうたわれていますし。
・自動制御のルーチンを記述して、エンドユーザーに配布することが出来るのか。 (テストツールと聞くと、開発者が自分の会社で使うものをイメージしてしまうので)
Qt アプリケーションをテストするためのツールでこのような目的には使えません。
・価格はいくらか。 という点を含め、検討してみます。
ありがとうございました。
2016年9月7日 1:20 Kenji Sugita kenji@j04.itscom.net:
杉田です。
Qt アプリケーションのテストならば Squish が最もよいです。
https://www.froglogic.com/squish/gui-testing/
2016/09/06 20:58、梅澤智実 umez5555@gmail.com のメール:
はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。 _______________________________________________ Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
杉田です。
2016/09/08 10:15、梅澤智実 umez5555@gmail.com のメール:
こんにちは、梅澤です。
最初のメールが分かりづらかったようで申し訳ないのですが、目的は開発環境のテストではなく、
『エンドユーザーが使うあるアプリケーション(Qtで作成されたウィンドウを持つ)の入力処理の自動化』
なのです。
最初の回答で「テストならば」と書きました。
Squishのようなソフトが存在するなら、別のプロセスからQtのテキストボックス領域に入力したり、ボタンを押したりする方法があると思うのですが、何か他に上記の目的で使えそうなソフトはございませんでしょうか。
あるいは、Qtの何らかの機能に関して調査してみれば、糸口はつかめるでしょうか。
組み込みでは別のプロセスでマウスとキーボードデバイスをオープンして Qt アプリケーション にソケット経由で送りつけてイベントループに投げ込むということはときどきします。
QObject、Qt のイベントシステムや Qt Test http://doc.qt.io/qt-5/qttest-index.html を調べてみてはいかがでしょうか。
2016年9月7日 23:07 Kenji Sugita kenji@j04.itscom.net:
杉田です。
2016/09/07 16:11、梅澤智実 umez5555@gmail.com のメール:
梅澤です。
お返事ありがとうございます。
Squish、確かに良さそうですね。Qtへの対応が明確にうたわれていますし。
・自動制御のルーチンを記述して、エンドユーザーに配布することが出来るのか。 (テストツールと聞くと、開発者が自分の会社で使うものをイメージしてしまうので)
Qt アプリケーションをテストするためのツールでこのような目的には使えません。
・価格はいくらか。 という点を含め、検討してみます。
ありがとうございました。
2016年9月7日 1:20 Kenji Sugita kenji@j04.itscom.net:
杉田です。
Qt アプリケーションのテストならば Squish が最もよいです。
https://www.froglogic.com/squish/gui-testing/
2016/09/06 20:58、梅澤智実 umez5555@gmail.com のメール:
はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。 _______________________________________________ Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
こんにちは、梅澤です。
お返事ありがとうございます。
ご助言ありがとうございます。お教え頂いたポイントについて調べて見ます。 とりあえず、もう少しQtの基本的な事を理解した方がよいかと思い、オライリーの「入門 Qt 4プログラミング」を購入して読み始めてみました。
まずは前述のポイントに関して理解できるよう努力してみます。
2016年9月8日 12:55 Kenji Sugita kenji@j04.itscom.net:
杉田です。
2016/09/08 10:15、梅澤智実 umez5555@gmail.com のメール:
こんにちは、梅澤です。
最初のメールが分かりづらかったようで申し訳ないのですが、目的は開発環境のテストではなく、
『エンドユーザーが使うあるアプリケーション(Qtで作成されたウィンドウを持つ)の入力処理の自動化』
なのです。
最初の回答で「テストならば」と書きました。
Squishのようなソフトが存在するなら、別のプロセスからQtのテキストボックス領域に入力したり、ボタンを押したりする方法があると思うのですが、何か他に上記の目的で使えそうなソフトはございませんでしょうか。
あるいは、Qtの何らかの機能に関して調査してみれば、糸口はつかめるでしょうか。
組み込みでは別のプロセスでマウスとキーボードデバイスをオープンして Qt アプリケーション にソケット経由で送りつけてイベントループに投げ込むということはときどきします。
QObject、Qt のイベントシステムや Qt Test http://doc.qt.io/qt-5/qttest-index.html を調べてみてはいかがでしょうか。
2016年9月7日 23:07 Kenji Sugita kenji@j04.itscom.net:
杉田です。
2016/09/07 16:11、梅澤智実 umez5555@gmail.com のメール:
梅澤です。
お返事ありがとうございます。
Squish、確かに良さそうですね。Qtへの対応が明確にうたわれていますし。
・自動制御のルーチンを記述して、エンドユーザーに配布することが出来るのか。 (テストツールと聞くと、開発者が自分の会社で使うものをイメージしてしまうので)
Qt アプリケーションをテストするためのツールでこのような目的には使えません。
・価格はいくらか。 という点を含め、検討してみます。
ありがとうございました。
2016年9月7日 1:20 Kenji Sugita kenji@j04.itscom.net:
杉田です。
Qt アプリケーションのテストならば Squish が最もよいです。
https://www.froglogic.com/squish/gui-testing/
2016/09/06 20:58、梅澤智実 umez5555@gmail.com のメール:
はじめまして。 梅澤と申します。 Qtは初心者です。 (まだ「Qt QuickではじめるクロスプラットフォームUIプログラミング」を購入して、少しだけ斜め読みした程度) Windows上でCやVBやDelphi等でのプログラム経験は、ある程度あります。
今まであるメーカー製のソフト(多分、Visual C++製)のダイアログを、UWSCやAutoItといったソフトを使って制御してきました。 具体的には、 a) ボタンをクリックする b) テキストボックスに文字を入れる c) ラベル(スタティックテキスト)の文字が書き換わったら、その文字列を取得する といった事を行ってきました。
UWSC http://www.uwsc.info/ AutoIt https://www.autoitscript.com/site/autoit/
(UWSCやAutoItは、外部からウィンドウハンドルにメッセージを送る等で、人間の代わりにマウスやキーボードの操作を、自動的に行ってくれるソフトです)
ところが、そのソフトが、新しいバージョンからQtで作成されるようになりました。
Windowsの標準コントロールが使われなくなり、ダイアログのクラスは、ダイアログ全体で Qt5QWindowIcon と認識されてしまいます。
そのせいで、a)~c)が出来なくなってしまいました。
Qtでは、ボタンやテキストボックス等は全てQt側で描画しているらしいので、その影響だと思 いますが。
以下のような条件下で、難しいのですが、どうにか外部から従来行っていたa)~c)のことを行 う事は出来ないでしょうか。 例えば、私がQtを勉強してQtでプログラムを作成できるレベルになれば、2つのQtのプログ ラム間で何らかのやり取り等、出来るものでしょうか?
それとも制御される側に、それなりの受け皿がない以上、難しいでしょうか?
<条件> ・制御される側のプログラムを改造することは出来ません。 ・制御される側のQtのソースを入手することも出来ません。
SmartBearという会社のTEST COMPLETEというテスト用の製品では、Qt用のモジュール を使ってテストの自動化を行えるようなので、何か切り口があるのでしょうか。
Qt Testing Modules https://support.smartbear.com/downloads/testcomplete/qt-modules/
Qtの調査は始めたばかりで、どこから手を付けて良いのか迷っています。 「まずは、この資料を読んで下さい」等でも良いので、アドバイス頂けないでしょうか。
<技術的でない部分の補足> 制御される側のソフトを作成している会社は、海外の会社なのですが、日本法人があります。 その日本法人の担当者と協力して、そのソフトの自動化のために、上で述べたような事を 行っておりました。 (日本法人から海外の本社に自動化のお願いしても、力関係からか、なかなか手を入れて もらえなかったらしいです) しかし、そのうち、日本法人の担当者が止めてしまい、さらに今まVC++製だった部分が Qt製に変わり、前述のような状態に至りました。
以上、何かヒントでも良いのでお教え願えないでしょうか。 _______________________________________________ Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users