エクセルのウィンドウハンドルを得たい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
立花希海
記事: 9
登録日時: 13年前
連絡を取る:

エクセルのウィンドウハンドルを得たい

#1

投稿記事 by 立花希海 » 13年前

エクセルを開いて閉じるだけのサンプルをネットで調べて作って見たのですが
以下のようになりました。
一応ちゃんと開いて閉じるのですがやり方はあっているのでしょうか。
それとももっとスマートな方法とかあるのでしょうか

グローバル変数を使うのはあまりよくないと聞いたりもします。

コード:

	HINSTANCE	 hInst;
	/// Excelファイルを開く.
	hInst = ShellExecute( NULL, TEXT("open"), "家計簿.xls", NULL, NULL, SW_MINIMIZE );

	s_hFindWhd = NULL;
	EnumWindows( EnumWindowsProc , (LPARAM)hInst );
	if( s_hFindWhd )	PostMessage( s_hFindWhd, WM_CLOSE, 0, 0 );

コード:

HWND	s_hFindWhd = NULL;

BOOL CALLBACK EnumWindowsProc( HWND _hWnd , LPARAM _lp )
{
	TCHAR	strWindowText[64];
	
	if( (HINSTANCE)_lp != (HINSTANCE)GetWindowLong( _hWnd, GWL_HINSTANCE) )
	{
		GetWindowText(_hWnd , strWindowText , 64);
		if (strWindowText[0] == 0) return TRUE;
		
		if( NULL != strstr( strWindowText, TEXT("Microsoft") ) )
			if( NULL != strstr( strWindowText, TEXT("Excel") ) )
			{
				s_hFindWhd = _hWnd;
				return FALSE;
			}
	}
	return TRUE;
}
もっといい方法とかあったら教えて下さい。
一式わたしのサイトにもアップしてあります。
マルチバイトを忘れずに

トントン
記事: 100
登録日時: 15年前

Re: エクセルのウィンドウハンドルを得たい

#2

投稿記事 by トントン » 13年前

OLE オートメーションを使用すれば
スマートになるのでは?


追記
調べてみましたが、
C言語で直接OLEオートメーションを使用するのは面倒くさそうですね。
視覚的にもわかりにくいし。。。

一応、参考URLを
http://detail.chiebukuro.yahoo.co.jp/qa ... 1270803672

(申し訳ないですが、エクセルを持っていないので試してないです)

立花希海
記事: 9
登録日時: 13年前
連絡を取る:

Re: エクセルのウィンドウハンドルを得たい

#3

投稿記事 by 立花希海 » 13年前

うーん、わたしにはわかりません><
やはり基礎からきっちりやらないとダメなようですね。
マルチバイトを忘れずに

閉鎖

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