Avatar billede martin_moth Mester
01. september 2004 - 07:22 Der er 11 kommentarer og
1 løsning

"dobbeltklik" på fil

Jeg har en variabel, der indeholder teksten "c:\fil.xls" - den kunne også indeholde noget med fil.msg eller fil.doc eler fil.txt eller fil.dwg.

Jeg vil gerne på en eller anden måde smide en kommando af sted (evt. ved Shell?) der svarer til, at der dobbeltklikkes på filen fra stifinderen. Windows skal selv finde ud af hvilket program der skal bruges til at åbne.

Har ikke vb på denne pc til at teste, så håber på aftestet svar :o)
Avatar billede peter.erikse Nybegynder
01. september 2004 - 07:27 #1
I Modul:
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

Bruges:
a = ShellExecute(hwnd, "Open", Filnavn, Filnavn, "", 1)
Avatar billede martin_moth Mester
01. september 2004 - 09:22 #2
Hvorfor filnavn to gange - og hvad forstås ved 1-tallet? nShowCmd, hvad skal den sætes til for at skjule com-prompten?
Avatar billede peter.erikse Nybegynder
01. september 2004 - 09:30 #3
Kan ikke lige huske det - men det virker.
Avatar billede martin_moth Mester
01. september 2004 - 09:52 #4
OK så - kikker på allapi og læser om det
Avatar billede joern Nybegynder
01. september 2004 - 12:47 #5
Hej.

1-tallet betyder at vinduet (shell) åbnes med normal visning, alternativer er 0 og 2 - h.h.v. minimeret og maksimeret)

M.v.h.  Jørn
Avatar billede martin_moth Mester
01. september 2004 - 14:21 #6
Hmm - nu har jeg ikke prøvet det, men jeg ville gerne, at shell forblev "usynlig", men den applikation, der startes op (fx. word) blev maximeret
Avatar billede sjh Nybegynder
01. september 2004 - 23:13 #7
martin_moth du plejer da godt at kunne lave lidt API.. Men hvis du ikke har fået det til at virke, så er her måske lidt hjælp..

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 Const SW_SHOWNORMAL    As Long = 1
Private Const SW_SHOWMINIMIZED As Long = 2
Private Const SW_SHOWMAXIMIZED As Long = 3

Private Sub Form_Load()
Dim strFile As String
Dim strPath As String

  strFile = "D:\AOF-Dansk\Haveparty.doc"

  strPath = Left$(strFile, InStrRev(strFile, "\"))
  Call ShellExecute(Me.hwnd, "Open", "WINWORD.EXE", strFile, strPath, SW_SHOWMAXIMIZED)
End Sub
Avatar billede martin_moth Mester
02. september 2004 - 10:37 #8
Ja, men problemet er, at jeg er i den sindsyge situation, at jeg sidder og koder i Textpad, og skulle gerne have det 90% på plads når jeg hopper over til VB (som er på min hjemmePC som står i en flyttekasse.... Så jeg kan ikke lige teste :o(

Se - jeg skal ikke selv angive "winword.exe", windows skal selv finde en passende app. at starte op afhængig af extention på filen...
Avatar billede peter.erikse Nybegynder
02. september 2004 - 11:01 #9
Hvad er der i vejen med mit (godkendte) forslag. Jeg har brugt det i stribevis af programmer og det virker upåklageligt.
Filnavn = sti+filnavn
Avatar billede sjh Nybegynder
02. september 2004 - 12:27 #10
peter.erikse > Problemet er at du angiver "Filnavn" nummer 2 som et parameter. Det kan godt være at det virker, men det vil svare til at du skræv sådan:

"program.exe program.exe" eller "c:\...\dokument.doc c:\...\dokument.doc" under kør.. ;)


martin_moth > ellers så gør du bare såadn:

Private Sub Form_Load()
Dim strFile As String
Dim strPath As String

  strFile = "D:\AOF-Dansk\Haveparty.doc"

  strPath = Left$(strFile, InStrRev(strFile, "\"))
  Call ShellExecute(Me.hwnd, "Open", strFile, vbNullString, strPath, SW_SHOWMAXIMIZED)
End Sub
Avatar billede martin_moth Mester
02. september 2004 - 13:28 #11
Du havde bare behøvet at skrive

Call ShellExecute(Me.hwnd, "Open", "fil.doc", vbNullString, "c:\dokumenter", SW_SHOWMAXIMIZED)

strFile = filnavn uden path
strPath = path uden filnavn

:o)

Vil du have lidt i godteposen sjh?
Avatar billede sjh Nybegynder
02. september 2004 - 22:13 #12
nææ tak.. jeg mangler ikke noget :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester