Avatar billede engberg Juniormester
08. maj 2000 - 13:32 Der er 7 kommentarer og
1 løsning

Åben dokument fra listbox

Hejsa

Jeg har en db med nogle navne på nogle word/wp/works filer.
De bliver vist i en listbox i mit program.

Hvordan åbner jeg dokumentet i dets respektive program ved, at dobbeltklikke på det?

Kan man evt. lave, så et højreklik bringer en menu op som i explorer - hvor man så kan vælge mellem de skriveprogrammer man har?

Venligst
  Kasper
Avatar billede mix Nybegynder
08. maj 2000 - 14:19 #1
Hej Kasper

Jeg ved ikke om det er det her du mener men Du kan lave en popupmenu til dit program
du laver en et menupunkt der hedder:

Name : Open
MenuName :MenuOpen
også lav den usynlig.

også lave de undermenuer der skal være og de skal være synlige.

også under Private Sub Listbox1_MouseDown(Button as integer)
if button = 2 then
popupmenu MenuOpen
end if
End sub

For at starte programmet
skal du skrive denne kode under det menupunkt det skal startes fra.
---------------------------------------

Dim I

I = shell("Filenavn.exe " &  list1.Text,1)

Ved godt det måske ikke lige var det bedste forklaring, Men håber den hjalp dig lidt.

ellers er du velkommen til at skrive til  Mix@post6.tele.dk

Hilsen
M.I.X
Avatar billede tdaugaard Nybegynder
08. maj 2000 - 17:37 #2
<< mix >>
Ikke fordi i give a damn, men det ville nok være smart hvis du havde lavet det som et svar .. bare for din egen skyld!
Avatar billede mix Nybegynder
08. maj 2000 - 21:09 #3
Hej Kasper

Jeg ved ikke om det er det her du mener men Du kan lave en popupmenu til dit program
du laver en et menupunkt der hedder:

Name : Open
MenuName :MenuOpen
også lav den usynlig.

også lave de undermenuer der skal være og de skal være synlige.

også under Private Sub Listbox1_MouseDown(Button as integer)
if button = 2 then
popupmenu MenuOpen
end if
End sub

For at starte programmet
skal du skrive denne kode under det menupunkt det skal startes fra.
---------------------------------------

Dim I

I = shell("Filenavn.exe " &  list1.Text,1)

Ved godt det måske ikke lige var det bedste forklaring, Men håber den hjalp dig lidt.

ellers er du velkommen til at skrive til  Mix@post6.tele.dk

Hilsen
M.I.X

P.S
tdaugaard >> Nåå joo takker.
Avatar billede tdaugaard Nybegynder
08. maj 2000 - 23:12 #4
<< mix >>
Helt oki ..
Avatar billede engberg Juniormester
09. maj 2000 - 07:47 #5
Det er noget i den retning mix.
Er der noget sted man kan fange oplysninger om hvor word/wp/works ligger på en computer (fx. regdb'en) - hvordan gør man?

Hvad med menuen den popper vel op oppe i toppen?
Den skulle være ved siden af musen...
Avatar billede mix Nybegynder
09. maj 2000 - 08:49 #6
Engberg>>
Med henblik på Menuen så hopper den op ved siden af mussen.

Ja du kan godt hente via registreingsdatabasen, men det kræver du ved hvad nøglen hedder.
Hvorfor lader du ikke selv brugeren vælge programmet. det kunne tænkes brugeren ville bruger ms-word istedet.

Men sådan læser du i registringsdatabasen
------skriv i et module----------------

Option Explicit

Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Long, ByRef lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long

Const REG_SZ = 1                        ' Unicode nul terminated string
Const REG_EXPAND_SZ = 2                  ' Unicode nul terminated string
Const REG_DWORD = 4                      ' 32-bit number

' Reg Create Type Values...
Const REG_OPTION_NON_VOLATILE = 0      ' Key is preserved when system is rebooted

' Reg Key Security Options...
Const READ_CONTROL = &H20000
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_READ = KEY_QUERY_VALUE + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + READ_CONTROL
Const KEY_WRITE = KEY_SET_VALUE + KEY_CREATE_SUB_KEY + READ_CONTROL
Const KEY_EXECUTE = KEY_READ
Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
                      KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
                      KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
                   
' Reg Key ROOT Types...
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_PERFORMANCE_DATA = &H80000004

' Return Value...
Const ERROR_NONE = 0
Const ERROR_BADKEY = 2
Const ERROR_ACCESS_DENIED = 8
Const ERROR_SUCCESS = 0

Private Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Boolean
End Type

Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String) As String
    Dim i As Long                                   
    Dim rc As Long                                   
    Dim hKey As Long                                   
    Dim hDepth As Long                                      '
    Dim sKeyVal As String
    Dim lKeyValType As Long          Dim tmpVal As String                                 
    Dim KeyValSize As Long                                 
   

    rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Open Registry Key
   
    If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError         
   
    tmpVal = String$(1024, 0)                           
    KeyValSize = 1024                                   

    rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
                        lKeyValType, tmpVal, KeyValSize)   
                       
    If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError     
    tmpVal = Left$(tmpVal, InStr(tmpVal, Chr(0)) - 1)


    Select Case lKeyValType                                Case REG_SZ, REG_EXPAND_SZ                                  sKeyVal = tmpVal                                      Case REG_DWORD                              Data Type
        For i = Len(tmpVal) To 1 Step -1                 

            sKeyVal = sKeyVal + Hex(Asc(Mid(tmpVal, i, 1)))

        Next
        sKeyVal = Format$("&h" + sKeyVal)

Double Word To String
    End Select
   
    GetKeyValue = sKeyVal                                    rc = RegCloseKey(hKey)                                      Exit Function                                             
GetKeyError:Error Has Occured...
    GetKeyValue = vbNullString                                rc = RegCloseKey(hKey)                                  End Function
---------------------------------------
Lad os sige nøglen ligger i
HKEY_LOCAL_MACHINE\Software\Works\word
og nøglen hedder "program"

Så Skriv i din Form

Dim ProgramSti as String
ProgramSti = GetKeyValue(HKEY_LOCAL_MACHINE,"Software\Works\", ""program")
Avatar billede engberg Juniormester
09. maj 2000 - 12:07 #7
Du er guruen over alle guruer - tak skal du have, det virker kanont!!
Avatar billede mix Nybegynder
09. maj 2000 - 14:36 #8
engberg>>

Jamen tak :-)
Jeg er glad for at kunne hjælpe.

Hilsen
Mix
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