###前提・実現したいこと
こんにちは。
プログラミング1か月程度の初心者です。Visual studio 2010, C++を使用してアプリケーションを作っています。
現在制作中のアプリでは、OpenCVを用いてコンピュータの内蔵カメラの映像を取り込みその映像中で、ある特定の位置で肌色が検出されたときの時間を記録したいと思っています。
時間を記録するために、ネット上でダウンロードしたストップウォッチのアプリを使用しようと考えています。
具体的には、
外部のアプリ(ストップウォッチ)に今作成しているC++のプログラムからハンドルを用いてアクセスし、肌色を検出する度にストップウォッチのLAPボタンを押したいと思っています。
知恵をお貸しいただけると幸いです。
###発生している問題・エラーメッセージ
エラーはでていません。
今現在、外部アプリの親ハンドル、子ハンドル(LAPボタン)の取得に成功しています。
しかしSendMessageを用いてボタンをクリックしようとしてもまったく動作せず、困っています。
エラーメッセージ
###該当のソースコード
void getLifeLogData(){ HWND hWndParent = FindWindow(_T("WindowsForms10.Window.8.app.0.378734a"), _T("MeStopwatch")); HWND hWndChild1 = FindWindowEx(hWndParent, NULL, _T("WindowsForms10.Window.8.app.0.378734a"), _T("")); HWND hWndChild2 = FindWindowEx(hWndParent, NULL, NULL, TEXT("Write Name...")); HWND hWndChild3 = FindWindowEx(hWndChild1, NULL, NULL, TEXT("ADD LAP")); HWND hWndChild4 = FindWindowEx(hWndChild1, NULL, NULL, TEXT("START")); //親ハンドルが取得できてない場合メッセージボックスを表示 if(hWndParent == NULL){ MessageBox(0, _T("MeStopwatch not found"), _T("MessageBox"), MB_OK) ; } //子ハンドル1が取得できない場合の動作 if(hWndChild1 == NULL){ MessageBox(0, _T("List not found"), _T("MessageBox"), MB_OK) ; } //子ハンドル2が取得できない場合の動作 if(hWndChild2 == NULL){ MessageBox(0, _T("'Write Name...' not found"), _T("MessageBox"), MB_OK) ; } //子ハンドル3が取得できない場合の動作 if(hWndChild3 == NULL){ MessageBox(0, _T("'ADD LAP' not found"), _T("MessageBox"), MB_OK) ; } if(hWndChild4 == NULL){ MessageBox(0, _T("'START' not found"), _T("MessageBox"), MB_OK) ; } SendMessage(hWndChild4, WM_ACTIVATE, 0, (LPARAM)hWndChild4); PostMessage(hWndChild4, WM_LBUTTONDOWN, NULL, NULL); PostMessage(hWndChild4, WM_LBUTTONUP, NULL, NULL); }
###試したこと
・ハンドルを得るためにクラス等はwinspectorを用いて確認しました。
・PostMessage(hWndChild4, BM_CLICK, NULL, NULL);も試しました。
・ブレイクポイントを用いてhWndChild4の値を調べた際、Winspectorで確認できる16進数の値と一致しています。しかし、その隣にunused、CX0030 エラー 式が評価できませんと書かれています。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/27 05:31 編集