はじめまして

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: はじめまして

Re:はじめまして

by まっちゃん » 2005年12月12日(月) 13:02

Sinryow様、レスありがとうございます。
試してみたんですが結局ダメでした。

あの後いじっていたら、リリースビルドのときは異常終了するが、デバッグビルドのときは異常終了しないことが分かり、わけ分かんなくなってしまいました。

こんな自分ですがよろしくお願いします。

Re: はじめまして

by Sinryow » 2005年12月11日(日) 00:39

実際に試していないので分かりませんが,

コード: 全て選択

	If Fol=0 Then
		shRet=ShellExecute(NULL,NULL,P,"",CFName,SW_SHOW)
	Else
		shRet=ShellExecute(NULL,"open",CFName,"",CFName,SW_SHOW)
ShellExecute関数の第4引数を,「""」ではなくNULLにしてみるといいかもしれません。
実行ファイルでないファイルを開く場合は,NULLでなければならないようです。

http://msdn.microsoft.com/library/defau ... xecute.asp(英語)より
lpParameters
[in] If the lpFile parameter specifies an executable file, lpParameters is a pointer to a null-terminated string that specifies the parameters to be passed to the application. The format of this string is determined by the verb that is to be invoked. If lpFile specifies a document file, lpParameters should be NULL.
(訳)もしlpFileが実行ファイルである場合,lpParametersは,そのアプリケーションに渡す,ヌル文字で終わる文字列を指定する。その文字列の形式は呼び出される動詞(訳注:lpOperationで指定した動作)によって決まる。もしlpFileがドキュメントファイルである場合,lpParametersはNULLでなければならない。
※余談ですが

コード: 全て選択

	_splitpath(P,DName,FName,NULL,NULL)
	wsprintf(CFName,"%s%s",DName,FName)
PとCFNameは同じくなるのではないでしょうか?

Re:はじめまして

by まっちゃん » 2005年12月10日(土) 23:33

Sinryow様レスありがとうございます。
どこでエラーが出るのかが分からないので,何とも言えないのですが・・・
それは分かってらっしゃるのでしょうか?
どうも、「If Fol=0 Then...」でエラーになってるようです。(Fol=0だと発生しない。)
また、
この関数の呼び出し元はどのようになっているのでしょうか?
についてですが、

コード: 全て選択


Sub MainWnd_CommandButton1_Click()
    Exef(1)
End Sub
となっております。

よろしくお願いします。

Re: はじめまして

by Sinryow » 2005年12月10日(土) 16:32

どこでエラーが出るのかが分からないので,何とも言えないのですが・・・
それは分かってらっしゃるのでしょうか?

それと,この関数の呼び出し元はどのようになっているのでしょうか?

はじめまして

by まっちゃん » 2005年12月08日(木) 18:45

はじめまして。
早速ですが助けてください。
ランチャーを作っているんですが、以下の関数を実行すると、異常終了してしまうんです。

コード: 全て選択


Sub Exef(No As Long)
	Dim Str[256] As Byte
    Dim P     [256] As Byte
	Dim CFName[256] As Byte
    Dim SECTION[18] As Byte
	wsprintf(Str,"BTN%d",No)
	GetPrivateProfileString(SECTION,Str,"",P,256,Path)
	If lstrcmp(P,"")=0 Then 
		MessageBox(0,"NG1","",MB_OK)
		End
	End If
	_splitpath(P,DName,FName,NULL,NULL)
	wsprintf(CFName,"%s%s",DName,FName)
	If Fol=0 Then
		shRet=ShellExecute(NULL,NULL,P,"",CFName,SW_SHOW)
	Else
		shRet=ShellExecute(NULL,"open",CFName,"",CFName,SW_SHOW)
	EndIf
	If shRet<32 As HINSTANCE  Then MessageBox(0,"NG2","",MB_OK)
End Sub
ただ、この関数、他のプロジェクトにコピーすると正常に動作します。

バージョンは、4.12.01、OSは、WindowsXP Home SP2です。
よろしくお願いします。

ページトップ