どうしてもエラーの原因がわからないので教えてください。。。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
PonPon

どうしてもエラーの原因がわからないので教えてください。。。

#1

投稿記事 by PonPon » 2ヶ月前

最終的には他のソフトのボタンを押したり文字を入力することが目的なのですが、
既にウィンドウハンドルを取得する段階で躓いてます。。。

VC++2019を使用していて、
"CL.exe"はコード2を伴って終了しました。
と出てしまいます。

コード:

#include <Windows.h>


struct cess
{
	HWND SW_hWnd;
	HWND C_SW_hWnd1;
	HWND C_SW_hWnd2;
	HWND C_SW_hWnd3;
};


int WINAPI WinMain(HINSTANCE hInstance, HANDLE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	struct cess c;

	
	c.SW_hWnd = FindWindow(L"WindowsForms10.Window.8.app.0.141b42a_r6_ad1", L"Save Wizard for PS4 MAX - 1.0.6510.36416");
	c.C_SW_hWnd1 = FindWindowEx(c.SW_hWnd, c.C_SW_hWnd1, L"WindowsForms10.Window.8.app.0.141b42a_r6_ad1", 0);
	c.C_SW_hWnd2 = FindWindowEx(c.C_SW_hWnd1, c.C_SW_hWnd2, L"WindowsForms10.Window.8.app.0.141b42a_r6_ad1", 0);
	c.C_SW_hWnd3 = FindWindowEx(c.C_SW_hWnd2, c.C_SW_hWnd3, L"WindowsForms10.BUTTON.app.0.141b42a_r6_ad1", L"Deactivate");

	if (c.C_SW_hWnd3 != NULL)
	{
		MessageBox(NULL, (LPCSTR)L"ハンドル取得成功!!", (LPCSTR)L"Error!!!", MB_OK);
	}
	else
	{
		MessageBox(NULL, (LPCSTR)L"Save Wizard PS4 MAXを起動してください。", (LPCSTR)L"Error!!", MB_OK);
	}

	return 0;
}

アバター
もるも
記事: 52
登録日時: 3年前
連絡を取る:

Re: どうしてもエラーの原因がわからないので教えてください。。。

#2

投稿記事 by もるも » 2ヶ月前

ループ処理が無いとそのままプログラムは終了してしまいます。

アバター
みけCAT
記事: 6214
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: どうしてもエラーの原因がわからないので教えてください。。。

#3

投稿記事 by みけCAT » 2ヶ月前

API関数はANSI版かUnicode版かを指定していないのに、
文字列はLを使って明示的にUnicode版を指定しているのがよくなさそうですね。
以下の(A)(B)(C)どれか1セットの修正を試してみてください。

(A) 明示的にANSI版を用いる
・関数名(FindWindow, FindWindowEx, MessageBox)の最後に全てAをつける
・文字列の前にあるLを全て削除する

(B) 明示的にUnicode版を用いる
・関数名(FindWindow, FindWindowEx, MessageBox)の最後に全てWをつける
・LPCSTRへのキャストを全て削除する

(C) コンパイルオプションで切り替えられるようにする
・文字列の前にあるLを全て削除する
・LPCSTRへのキャストを全て削除する
・文字列を全てTEXT(~)で囲む
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6214
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: どうしてもエラーの原因がわからないので教えてください。。。

#4

投稿記事 by みけCAT » 2ヶ月前

FindWindowExFindWindowEx関数の呼び出し(全て)において、
未初期化の自動変数の値を関数に渡しているのも良くなさそうですね。
適切に初期化するか、適切な変数(メンバを含む)に置き換えるのが良いでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

PonPon

Re: どうしてもエラーの原因がわからないので教えてください。。。

#5

投稿記事 by PonPon » 2ヶ月前

変数の初期化をせずに使用していたのが問題だったようです。
回答してくださった方、ありがとうございました。

返信

“C言語何でも質問掲示板” へ戻る