Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Der Pfad eines Programmes soll überall funktionieren

Frage Entwicklung Visual Studio

Mitglied: Sudden

Sudden (Level 1) - Jetzt verbinden

15.04.2014 um 10:51 Uhr, 1236 Aufrufe, 10 Kommentare

Hallo Admins,

ich habe ein paar Probleme mit einem kleinen Programm was ich geschrieben habe.
Und zwar ist es ein Programm das mir meine Wiedergabegeräte anzeigt. Ich kann diese auch mit Hilfe eines kleinen Tools (EndPointControler) auswählen. Was mich stört, ist das ich den Pfad vom EndPointControler angeben muss, dieser aber selbstverständlich abweicht, wenn ich das Programm auf einem anderen Rechner ausführe. Ist es möglich das irgendwie zu vereinfachen? Kann ich das Programm und den EPC in einen Ordner packen, sodass es von dort aus ausgeführt wird, egal auf welchem PC es ausgeführt wird?
Dann noch etwas. Wenn ich mein Programm starte ist das aktive Wiedergabegerät immer als erstes in meiner ListBox aufgeführt, d.h.: Headset ist auf dem Index 0, jedoch ist beim EPC die Reihenfolge immer gleich. z.B.:

C:\>EndPointController.exe
Audio Device 0: Digital Output Device (HDMI TX0) (VIA High Definition Audio)
Audio Device 1: SPDIF Interface (TX1) (VIA High Definition Audio)
Audio Device 2: Headphone (VIA High Definition Audio)
Audio Device 3: Speakers (VIA High Definition Audio)

Wenn ich jetzt also den Index 2 auswähle, weil in meinem Programm die Speaker dort angezeigt werden, wähle ich stattdessen erneut die Headphones aus. Wie kann ich das bewerkstelligen, dass beide Listen synchron laufen?

Hier noch mein code:

01.
 
02.
'Pruefen ob eine Soundkarte im System installiert ist und auflisten der vorhandenen Soundkarten 
03.
Option Explicit On 
04.
Option Strict On 
05.
 
06.
Imports Microsoft.DirectX 
07.
Imports Microsoft.DirectX.DirectSound 
08.
 
09.
Public Class Form1 
10.
 
11.
    ' List der vorhandenen Soundkarten im System ermitteln 
12.
    Public Class GetSoundDevices 
13.
 
14.
        ' Rueckgabe der gefundenen Soundkarten 
15.
        Public Shared ReadOnly Property DeviceList() As List(Of String) 
16.
            Get 
17.
                Return GetDeviceList() 
18.
            End Get 
19.
 
20.
        End Property 
21.
 
22.
        ' Soundkarten ermitteln 
23.
        ' Rueckgabe der gefundenen Soundkarten an eine List(...) 
24.
        Private Shared Function GetDeviceList() As List(Of String) 
25.
            Dim List As New List(Of String) 
26.
            Dim DeviceList As New DevicesCollection 
27.
            Try 
28.
                Dim n As Integer = 0 
29.
                Do While n < DeviceList.Count 
30.
                    List.Add(DeviceList(n).Description) 
31.
                    n += 1 
32.
                Loop 
33.
            Catch ex As Exception 
34.
                Throw New Exception(ex.Message.ToString()) 
35.
            End Try 
36.
            Return List 
37.
        End Function 
38.
 
39.
    End Class 
40.
 
41.
    ' Pruefen ob im System eine Soundkarte installiert ist 
42.
    Public Class DirectX_SoundkarteInstalliert 
43.
 
44.
        ' Rueckgabe ob eine Soundkarte gefunden wurde. True - es wurde eine Soundkarte gefunden sonst False 
45.
        Public Shared ReadOnly Property SoundkarteInstalliert() As Boolean 
46.
            Get 
47.
                Return GetSoundCard() 
48.
            End Get 
49.
        End Property 
50.
 
51.
        ' Soundkarten ermitteln 
52.
        Private Shared Function GetSoundCard() As Boolean 
53.
            Dim Result As Boolean = False 
54.
            Try 
55.
                Dim Device As DirectSound.Device = New DirectSound.Device() 
56.
 
57.
                If Device = Nothing Then 
58.
                    Result = False 
59.
                Else 
60.
                    Result = True 
61.
                End If 
62.
            Catch ex As Exception 
63.
                Throw New Exception(ex.Message.ToString()) 
64.
            End Try 
65.
            Return Result 
66.
        End Function 
67.
    End Class 
68.
 
69.
 
70.
    ' Initialisierung 
71.
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
72.
            Handles MyBase.Load 
73.
        With Me 
74.
            .CenterToScreen() 
75.
            .Text = "SoundSwitch" 
76.
        End With 
77.
        ListBox1.Items.Clear() 
78.
        Try 
79.
            'Ist eine Soundkarte im System vorhanden?... 
80.
            Dim IstInstalliert As Boolean = DirectX_SoundkarteInstalliert.SoundkarteInstalliert() 
81.
            Select Case IstInstalliert 
82.
                '...wenn ja ... 
83.
                Case True 
84.
                    '... wird versucht eine Liste der vorhandenen Geraete anzulegen... 
85.
                    Dim List As New List(Of String)(GetSoundDevices.DeviceList()) 
86.
                    '... enthaelt die Liste Daten?... dann ... 
87.
                    If List IsNot Nothing Then 
88.
                        '... wird die Liste in einer Schleife durchlaufen und das Ergebnis 
89.
                        'in einer ComboBox aufgelistet 
90.
                        For Each Devices As String In List 
91.
                            Me.ListBox1.Items.Add(Devices) 
92.
                        Next 
93.
                        If Me.ListBox1.Items.Count > 0 Then 
94.
                            'Erstes Item in der ListBox selektieren 
95.
                            'Me.ListBox1.SelectedIndex = 1 
96.
                        End If 
97.
                    End If 
98.
                Case Else 
99.
                    '... wenn keine Soundkarte gefunden werden konnte : 
100.
                    MessageBox.Show("Es ist keine Soundkarte installiert!") 
101.
            End Select 
102.
            'Eventuell auftretenden Fehler abfangen. 
103.
        Catch ex As Exception 
104.
            Throw New Exception(ex.Message.ToString()) 
105.
        End Try 
106.
        'Primärer Soundtreiber? Was soll das? 
107.
        ListBox1.Items.RemoveAt(0) 
108.
        Me.Hide() 
109.
        NotifyIcon1.Visible = True 
110.
        NotifyIcon1.ShowBalloonTip(1500, "SoundSwitch", "", ToolTipIcon.Info) 
111.
 
112.
    End Sub 
113.
 
114.
    ' Funktionsauswertung 
115.
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
116.
            Handles Button1.Click 
117.
        ListBox1.Items.Clear() 
118.
        Try 
119.
            'Ist eine Soundkarte im System vorhanden?... 
120.
            Dim IstInstalliert As Boolean = DirectX_SoundkarteInstalliert.SoundkarteInstalliert() 
121.
            Select Case IstInstalliert 
122.
                '...wenn ja ... 
123.
                Case True 
124.
                    '... wird versucht eine Liste der vorhandenen Geraete anzulegen... 
125.
                    Dim List As New List(Of String)(GetSoundDevices.DeviceList()) 
126.
                    '... enthaelt die Liste Daten?... dann ... 
127.
                    If List IsNot Nothing Then 
128.
                        '... wird die Liste in einer Schleife durchlaufen und das Ergebnis 
129.
                        'in einer ComboBox aufgelistet 
130.
                        For Each Devices As String In List 
131.
                            Me.ListBox1.Items.Add(Devices) 
132.
                        Next 
133.
                        If Me.ListBox1.Items.Count > 0 Then 
134.
                            'Erstes Item in der ListBox selektieren 
135.
                            'Me.ListBox1.SelectedIndex = 1 
136.
                        End If 
137.
                    End If 
138.
                Case Else 
139.
                    '... wenn keine Soundkarte gefunden werden konnte : 
140.
                    MessageBox.Show("Es ist keine Soundkarte installiert!") 
141.
            End Select 
142.
            'Eventuell auftretenden Fehler abfangen. 
143.
        Catch ex As Exception 
144.
            Throw New Exception(ex.Message.ToString()) 
145.
        End Try 
146.
        'Primärer Soundtreiber? Was soll das? 
147.
        ListBox1.Items.RemoveAt(0) 
148.
    End Sub 
149.
 
150.
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 
151.
        If ListBox1.SelectedIndex = 1 Then Process.Start("C:\Users\Desktop\Desktop\ProjektENDE\EndPointController.exe", "1") 
152.
        If ListBox1.SelectedIndex = 0 Then Process.Start("C:\Users\Desktop\Desktop\ProjektENDE\EndPointController.exe", "0") 
153.
    End Sub 
154.
End Class
MfG,

Sudden
Mitglied: Sheogorath
15.04.2014 um 10:55 Uhr
Moin,

Du könntest wenn es nicht allgemein gelegen ist (%programfiles(x86)%), aber dennoch installiert den Pfad aus der Registry auslesen (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall) bzw. wow64 wenn es um x64 geht.

Gruß
Chris
Bitte warten ..
Mitglied: lenny4me
15.04.2014 um 11:00 Uhr
Hallo,

was spricht denn dagegen das Ding in einen Ordner zu packen und denn via \\%computername%\pfad\[..].exe darauf zuzugreifen?


Grüße
Bitte warten ..
Mitglied: colinardo
15.04.2014, aktualisiert um 11:18 Uhr
Zitat von Sudden:
Was mich stört, ist das ich den Pfad vom EndPointControler angeben muss, dieser aber selbstverständlich abweicht, wenn ich das Programm auf einem anderen Rechner ausführe. Ist es möglich das irgendwie zu vereinfachen?
Der aktuellen Pfad deines Programmes erhältst du immer mit
My.Application.Info.DirectoryPath
oder
Application.StartupPath
Grüße Uwe
Bitte warten ..
Mitglied: Sudden
15.04.2014 um 12:13 Uhr
Das verstehe ich nicht. Wenn ich mein Programm weitergebe ist es gepackt. wenn es dann entpackt wird, liegen mein SoundSwitch.exe und EndPointController.exe in einem Ordner wie soll ich jetzt meinen Pfad im Code bei
01.
Process.Start("C:\Users\Desktop\Desktop\ProjektENDE\EndPointController.exe", "1")
so ändern das er den EPC immer aus dem aktuellen Ordner nimmt, also wo auch mein Programm liegt?

Hat noch jemand ne Idee wegen der Reihenfolge vom EPC und meinem Programm? Also wie ich das in den Griff bekomme?

MfG,

Sudden
Bitte warten ..
Mitglied: colinardo
15.04.2014, aktualisiert um 12:25 Uhr
mit dir ist es wirklich schwer .....
Process.Start(My.Application.Info.DirectoryPath & "\EndPointController.exe", "1")
Bitte warten ..
Mitglied: Sudden
15.04.2014 um 12:30 Uhr
mit dir ist es wirklich schwer .....

Ja ich weiß. Ich bin aber auch sehr dankbar für deine Hilfe

Fakt ist, das Funktioniert so nicht.

01.
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 
02.
        Try 
03.
            If ListBox1.SelectedIndex = 1 Then Process.Start(My.Application.Info.DirectoryPath & "\EndPointController.exe", "1") 
04.
            If ListBox1.SelectedIndex = 0 Then Process.Start(My.Application.Info.DirectoryPath & "\EndPointController.exe", "0") 
05.
        Catch ex As Exception 
06.
 
07.
        End Try 
08.
         
09.
    End Sub 
10.
 
Bitte warten ..
Mitglied: colinardo
15.04.2014, aktualisiert um 12:39 Uhr
Zitat von Sudden:
Fakt ist, das Funktioniert so nicht.
Fakt ist das geht einwandfrei wenn man die Exe in das Verzeichnis wo die Exe des Programms liegt plaziert! Ich mach das ja nicht zum ersten mal, und hier geht es wie immer einwandfrei !!!

Ich klinke mich jetzt hier aus, wird mir jetzt zu blöd....sorry.
Bitte warten ..
Mitglied: Sudden
15.04.2014 um 12:52 Uhr
Zitat von colinardo:
Ich klinke mich jetzt hier aus, wird mir jetzt zu blöd....sorry.

Miesepeter...

Die exe ist im Debug Ordner wo ich meine VB Projekte habe.

Zu der Reihenfolge Der Wiedergabegeräte hat niemand ne idee?

MfG,

Sudden
Bitte warten ..
Mitglied: Snowman25
15.04.2014 um 14:37 Uhr
Wie wäre es, wenn du My.Application.Info.DirectoryPath mal in eine MsgBox schreibst und nachschaust, ob das wirklich auch der von dir vermutete Pfad ist?
Bitte warten ..
Mitglied: Sudden
15.04.2014 um 15:04 Uhr
Hab das hinbekommen mit dem Pfad.

Aber Die Reihenfolge muss doch noch irgendwie zu ändern sein, oder?


MfG,


Sudden
Bitte warten ..
Ähnliche Inhalte
Windows 8
Windows 8.1 Liste der installieren Programme extrem reduziert. Programme funktionieren aber noch.
gelöst Frage von Sascha.FeigWindows 83 Kommentare

Hallo Gemeinde, heute hieve ich mal meinen Status vom passiven Lesen ins aktive Fragen - denn wer nicht fragt, ...

DNS
Meine Website ist nicht von überall aus erreichbar
Frage von rideboarderDNS7 Kommentare

Liebe Community. ich hab ein Problem mit meiner Website. Sie ist normalerweise gut erreichbar. Mir ist aber aufgefallen, dass ...

Virtualisierung
Desktop löscht überall Verknüpfung
gelöst Frage von Questionmark93Virtualisierung4 Kommentare

Wir benutzen den Thinstuff XPVS Server. Wir haben immer wieder Probleme damit :D Eines davon wäre: Wir haben gewisse ...

Windows Server
Startscript wird nicht überall ausgeführt
Frage von Thor01Windows Server5 Kommentare

Hallo, habe einer bestehenden Domäne einige neue PCs hinzugefügt und diese in die passenden OUs gesteckt. Verwunderlich ist jetzt, ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 4 MinutenVerschlüsselung & Zertifikate

Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, gilt das besonders ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 11 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 12 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...