Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1203 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
Mit freundlichen Grüßen,

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?

Mit freundlichen Grüßen,

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?

Mit freundlichen Grüßen,

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?


Mit freundlichen Grüßen,


Sudden
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Userverwaltung
Servergespeichertes Profil - Pfad ausfindig machen (6)

Frage von staybb zum Thema Windows Userverwaltung ...

Batch & Shell
Leerzeichen im Pfad (4)

Frage von Jallio zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...