2009-08-31 13 views
4

コマンドを押して、VB6アプリケーションでファイルを開きたいとします。このファイルは、別のプログラムによって読み取られたファイルタイプです。私はそれを開くと、そのファイルタイプを見つけると自動的に開きますので、ファイルタイプを読み取るプログラムも開く必要があります。誰もがこれで私を助けることができるVB6(ちょうどそれを得た昨日)でnewbのようなものです。VB6から既定のプログラムでファイルを開く

答えて

7

私はあなたの要件の細部に迷っていますが、一般にVB6からファイルを起動するには、ShellExecuteとそれに関連するAPI関数を使用できます。

これについては、どこで参考になるか分かりませんが、hereを始めることができます。

編集:
もうすぐです。 ShellExecuteへの第2引数は関連していますあなたのマシン上のプログラムを使用して、指定されたファイルを開くには、「オープン」である必要があり
:私は変わっ何

Private Sub smb3_Click()  
    ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, SW_SHOWNORMAL  
End Sub 

注:これに

Private Sub smb3_Click()  
    ShellExecute hWnd, "find", "C:\hi\my.file", vbNullString, vbNullString, SW_SHOWNORMAL  
End Sub 

:これを変更オープンしようとしているファイルの拡張子(関数の第3引数)を指定します。私が含むリンクをチェックしてください。

あなたのマシン(およびあなたのプログラムを使用するマシン)を確認する必要があります。ファイル拡張子.fileは、プログラムで起動するプログラムに関連付ける必要があります。

編集(9月9日)

OKは、私たちが仕事をするShellExecuteのsimplist実装を取得する場合を見てみましょう。

新しいVB6プロジェクト(標準EXE)を作成し、Form1にsmb1という名前のボタンを1つ追加します。フォームのコードビューに

移動し、このコード(とのみ、このコード)をコピーして貼り付ける:フォルダ:

Option Explicit 

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 


Private Sub smb3_Click() 
    Debug.Print ShellExecute(hWnd, "open", "C:\hi\my.txt", vbNullString, vbNullString, 1) 
End Sub 

あなたの「\ハイC」のmy.txtというテキストファイルがありますことを確認してください。

プログラムを実行し、ボタンをクリックします。あなたのマシンで設定したデフォルトのテキストファイルエディタプログラム(メモ帳など)でテキストファイルを開きます。

エラーが表示され、エラーが発生した行を教えてください。また、イミディエイトウィンドウを確認します。イミディエイトウィンドウは、プログラムを起動するとすぐに表示され、プログラムが実行されている限り表示されます。コードがShellExecuteの行を越えて実行されると、イミディエイトウィンドウには、その関数への呼び出しが返されたコードが表示されます。これは、あなたの問題について多くのことを教えてくれるでしょう。

コードが動作する場合は、 "C:\ hi \ my.file"で作業するために必要なファイルを処理するようにプログラムを変更することができます。

しかし、まずWindowsエクスプローラでファイルをダブルクリックするとどうなりますか?ファイルが開くと、システムが.file拡張子を持つファイルに関連付けられたプログラムがあることがわかります。ファイルが開かない場合は、プログラムを.file拡張子に関連付ける必要があります。詳細については、Windowsヘルプを参照してください。設定が完了したら、テストプログラムでsmb3 Clickイベントのコードを変更します。

Debug.Print ShellExecute(hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1) 

これを実行してプログラムをクリックします。ファイルが開きます。そうでない場合は、どのようなエラーが発生したのか、どこで、どのようなものがあるかをイミディエイトウィンドウに伝えてください。

プログラムが開いている場合は、ボタンのクリックイベントと、プログラムでファイルを開くために必要なコードShellExecuteの宣言があります。しかし、まだ変革があり、変革が必要です。

変更する必要があるのは、ボタンのクリックイベントです。あなたはShellExecuteへの呼び出しを中心に扱ういくつかの基本的なエラーが関与すべきである

ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1 

変更:あなたはこれで終わるように、我々は、デバッグコードを削除します。 ShellExecuteは実行時にコードを返します。このコードはエラーを示す可能性があります。上記リンク先のページでダウンロードできるサンプルプログラムを調べてください。その中でプログラマは、呼び出しの結果をresultという変数に書き込みます。 resultが32以下の場合、これはエラーを示します。サンプルプログラムでは、エラーメッセージにエラーが表示されますが、何をしたいか考えてみてください。

+0

を基本的に単にファイルを開くことになって私がボタンを押すと、私は助けにならないで、私は "サブまたは機能が定義されていません"というエラーを受け取ります –

+0

私には難しいいくつかのコードを見なくても問題は何か。私はリンクして、サンプルをダウンロードするページの下部にスクロールすることをお勧めします。調査(特にcmdExecute_Clickイベント)し、必要な部分をプロジェクトに移動します。あなたはあまり動かす必要がないので、サンプル中の行数によって落胆しないでください。サンプルフォームの上部にある宣言を忘れないでください.ShellExecuteには少なくとも1つ必要です。 –

+0

が、これは私のコードです: ます。Private Sub smb3_Click() のShellExecute hWndは、 "検索"、 "C:\こんにちは\ my.file"、_ vbNullString、vbNullString、SW_SHOWNORMAL End Subの –

0

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 

は、コードの下に適用され、このコードを使用してdllを登録

まず、このコードを使用してmy.iniファイルを開くには:_

Debug.Print ShellExecute(hWnd, "open", "C:\Program Files\MySQL\MySQL Server 5.0\my.ini", vbNullString, vbNullString, 1) 
関連する問題