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

Programm per Batchdatei starten und Parameter übergeben und mit Visual Basic auslesen

Frage Entwicklung VB for Applications

Mitglied: stinson300

stinson300 (Level 1) - Jetzt verbinden

01.05.2013 um 13:23 Uhr, 5862 Aufrufe, 11 Kommentare

Hallo miteinander,

Ich habe ein Problem mit meinem Programm.

Ich habe ein Programm mit Visual Basic geschrieben das ein Add-In bei uns deaktiviert oder umgekehrt.

Ich will jetzt aber dieses Programm mit einer Batchdatei starten und gerade auch noch einen Parameter übergeben.

zB. a für aktivieren und d für deaktivieren

Ich bin aber ein Anfänger mit Visual Basic, deshalb wollte ich euch fragen, wie ich diesen Parameter abfragen kann?

Gruss

Stefan

Danke für eure Antworten im voraus.
Mitglied: stinson300
01.05.2013 um 14:23 Uhr
Danke für deine Antwort.

Nein es ist nicht kaputt. Ich habe einfach nichts gefunden.

Gruss

Stefan
Bitte warten ..
Mitglied: stinson300
01.05.2013 um 15:44 Uhr
Danke funktioniert aber nicht
Bitte warten ..
Mitglied: MrTrebron
01.05.2013 um 17:21 Uhr
Hi,

vorhin am Smartphone gar nicht gesehen, du hast das hier bei VBA gepostet.
Welche VB nutzt du denn genau?

Gruß
Norbert
Bitte warten ..
Mitglied: stinson300
01.05.2013 um 17:35 Uhr
Die neuste,
ich programmiere mit visual studio 2012
Bitte warten ..
Mitglied: stinson300
02.05.2013 um 08:27 Uhr
Ich habe jetzt einmal ein Testprojekt gemacht.

Wie muss ich das jetzt eingeben in der Kommandozeile und wo wird der Wert hineingeschrieben?
Bitte warten ..
Mitglied: MrTrebron
02.05.2013 um 08:43 Uhr
Hi,

also das Beispiel aus meinem ersten Link (dotnetsnippets) funktioniert bei mir hervorragend.

Du rufst in deiner Batch ganz normal die Exe deines Programms auf und übergibst deine(n) Parameter

Programm.exe aktivieren
Programm.exe deaktivieren
Programm.exe debug

Den Parameter musst du dir dann selbst in eine Variable schreiben oder je nach Parameter die Sub oder Funktion in deinem Programm starten.

Gruß
Norbert
Bitte warten ..
Mitglied: stinson300
02.05.2013 um 13:54 Uhr
Wie muss ich den das bei meinem Programm machen ich schicke euch mal den Quellcode

Imports Microsoft.Win32
Imports System

Module DMS_Integration_deaktivieren

Private Property objShell As Object

Sub Main()
Dim WshShell
Dim OsType
Dim objFSO
Dim fso
Dim createfolder
Dim ESO
Dim Antwort As Char
Dim p As Process
ESO = CreateObject("Scripting.FileSystemObject")
objFSO = CreateObject("Scripting.FileSystemObject")
WshShell = CreateObject("WScript.Shell")
objShell = CreateObject("wscript.shell")
fso = CreateObject("Scripting.filesystemobject")

OsType = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE") ' Liest den Registry-Wert aus der die Architektur (x86 oder x64) definiert

For Each p In Diagnostics.Process.GetProcesses()
If p.ProcessName = "excel" Then
Console.WriteLine("Excel ist momentan gestartet bitte beenden sie ihr Excel-Programm")
GoTo LastLine
End If
Next

' Parameter auslesen

' Parameter benutzen

' Wenn er auf a ist dann aktiveren

Line5:
If objFSO.FileExists("C:\Program Files\Microsoft Office\Office12\XLSTART\DMintegration.xlam") Then
Console.WriteLine("Die Integration ist schon aktiviert und kann deshalb nicht akiviert werden")
Line0:
Console.WriteLine("Wollen sie es deaktivieren? (y/n)")
Antwort = CChar(CStr(Console.Read()))
If Antwort = "y" Then
GoTo Line1
ElseIf Antwort = "n" Then
GoTo LastLine
Else
Console.WriteLine("Geben Sie bitte für Ja y ein und für Nein n")
GoTo Line0
End If

End If

If OsType = "x86" Then ' Wenn er 32bit ist dann mach das



' Datei wieder ans richtige Ort verschieben
objFSO.MoveFile("C:\Program Files\Microsoft Office\Office12\XLSTART\Deaktiviert\DMintegration.xlam", "C:\Program Files\Microsoft Office\Office12\XLSTART\DMintegration.xlam")

' Jetzt setzt er den Registry-Eintrag auf 3, das bedeutet aktiviert
objShell.regwrite("HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\DMintegration_NET.Connect\LoadBehavior", "00000003", "REG_DWORD")

' "Deaktiviert" Ordner wieder löschen
ESO.DeleteFolder("C:\Program Files\Microsoft Office\Office12\XLSTART\Deaktiviert")


ElseIf OsType = "AMD64" Then ' wenn er 64 ist dann mach das

' Datei wieder ans richtige Ort verschieben
objFSO.MoveFile("C:\Program Files (x86)\Microsoft Office\Office12\XLSTART\Deaktiviert\DMintegration.xlam", "C:\Program Files (x86)\Microsoft Office\Office12\XLSTART\DMintegration.xlam")

' Jetzt setzt er den Registry-Eintrag auf 3, das bedeutet aktiviert
objShell.regwrite("HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\DMintegration_NET.Connect\LoadBehavior", "00000003", "REG_DWORD")

' "Deaktiviert" Ordner wieder löschen
ESO.DeleteFolder("C:\Program Files (x86)\Microsoft Office\Office12\XLSTART\Deaktiviert")


End If

' Wenn er auf d ist dann deaktivieren
Line1:
If objFSO.FileExists("C:\Program Files\Microsoft Office\Office12\XLSTART\Deaktiviert\DMintegration.xlam") Then
Console.WriteLine("Die Integration ist schon deaktiviert und kann deshalb nicht deakiviert werden")
Line2:
Console.WriteLine("Wollen sie es aktivieren? (y/n)")
Antwort = Console.Read()
If Antwort = "y" Then
GoTo Line5
ElseIf Antwort = "n" Then
GoTo LastLine
Else
Console.WriteLine("Geben Sie bitte für Ja y ein und für Nein n")
GoTo Line2
End If

End If

If OsType = "x86" Then ' Wenn er 32bit ist dann mach das

If objFSO.FileExists("C:\Program Files\Microsoft Office\Office12\XLSTART\Deaktiviert\DMintegration.xlam") Then
Console.WriteLine("Die Integration ist schon deaktiviert und kann deshalb nicht deakiviert werden")
End If

' Ordner für die Verschiebung erstellen
createfolder = fso.CreateFolder("C:\Program Files\Microsoft Office\Office12\XLSTART\Deaktiviert")

' Verschiebung der Datei
objFSO.MoveFile("C:\Program Files\Microsoft Office\Office12\XLSTART\DMintegration.xlam", "C:\Program Files\Microsoft Office\Office12\XLSTART\Deaktiviert\DMintegration.xlam")

' Jetzt setzt er den Registry-Eintrag auf 8, das bedeutet deaktiviert
objShell.regwrite("HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\DMintegration_NET.Connect\LoadBehavior", "00000008", "REG_DWORD")

ElseIf OsType = "AMD64" Then ' wenn er 64 ist dann mach das

If objFSO.FileExists("C:\Program Files (X86)\Microsoft Office\Office12\XLSTART\Deaktiviert\DMintegration.xlam") Then
Console.WriteLine("Die Integration ist schon deaktiviert und kann deshalb nicht deakiviert werden")
End If

' Ordner für die Verschiebung erstellen
createfolder = fso.CreateFolder("C:\Program Files (x86)\Microsoft Office\Office12\XLSTART\Deaktiviert")
' Verschiebung der Datei
objFSO.MoveFile("C:\Program Files (x86)\Microsoft Office\Office12\XLSTART\DMintegration.xlam", "C:\Program Files (x86)\Microsoft Office\Office12\XLSTART\Deaktiviert\DMintegration.xlam")

' Jetzt setzt er den Registry-Eintrag auf 8, das bedeutet deaktiviert
objShell.regwrite("HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\DMintegration_NET.Connect\LoadBehavior", "00000008", "REG_DWORD")

End If
LastLine:
End Sub
End Module
Bitte warten ..
Mitglied: MrTrebron
02.05.2013 um 15:03 Uhr
Hi,

das ist ja eher VBScript als VB.net.
Goto *kopfschuettel

Hier mal ein kleines Konstrukt:
01.
Imports Microsoft.Win32 
02.
Imports System 
03.
 
04.
 
05.
Module Module1 
06.
    Public OSVersion As Boolean = Environment.Is64BitOperatingSystem 'If true then 64 bit 
07.
    Public args() As String = Environment.GetCommandLineArgs 
08.
 
09.
    Sub Main() 
10.
        Dim p As Process 
11.
 
12.
        For Each p In Diagnostics.Process.GetProcesses() 
13.
            If p.ProcessName = "excel" Then 
14.
                Console.WriteLine("Excel ist momentan gestartet bitte beenden sie ihr Excel-Programm") 
15.
                Exit Sub 
16.
            End If 
17.
        Next 
18.
 
19.
        If args.GetUpperBound(0) = 0 Then 
20.
            Console.WriteLine("Kein Parameter übergeben") 
21.
            Exit Sub 
22.
        End If 
23.
        Select Case args(1) 
24.
            Case "A" 
25.
                'Do Something to activate 
26.
            Case "D" 
27.
                'Do something to deactivate 
28.
            Case Else 
29.
                Console.WriteLine("Parameter " & args(1) & " unbekannt") 
30.
                Exit Sub 
31.
        End Select 
32.
 
33.
    End Sub 
34.
 
35.
End Module
Quick 'n' dirty
Gruß
Norbert
Bitte warten ..
Mitglied: stinson300
02.05.2013 um 15:09 Uhr
Habe es jetzt selber herausgefunden, wie es geht aber danke für die Antwort
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Visual Studio
gelöst Pastebin auslesen mit Visual Basic? (2)

Frage von UltraZz zum Thema Visual Studio ...

Batch & Shell
Text-Datei auslesen und Inhalt als Parameter übergeben (1)

Frage von aubm2013 zum Thema Batch & Shell ...

Visual Studio
gelöst Remotedienst prüfen mit Visual Basic (1)

Frage von flyingmichael zum Thema Visual Studio ...

Visual Studio
Mit Visual Basic auf Shopware 5 API zugreifen (9)

Frage von SmogKiel zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (14)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...