VS 2008 - Single Instance (Command Line In Program)
Aug 6, 2011
I use a single instance in my application. What if I give command line arguments to the exe of my program, so I can be selective in what was given command line in my program, but still single instance?
Example:
test.exe /show
When the command /show, then my program will
Form2.Show
Form2.BringToFront
I have a single instance database app that emails out notifications. I would like to add a link in the emails that when clicked would open up the app and go to the section of the program that its supposed to go to. I implemented my own URL protocol so that links starting with my codewords get passed to my EXE. So far so good. I then parse the URL and pull the keyword and identifier out to open that section of the program. So if a user clicks a link like this:
MyApp:LoadCompany?ID=323
My application will start, it will grab the arguments (LoadCompany?ID=323), pass this to my load company routine and then load up company ID 323. Works great.
Now the issue is if the program is already open I still want the links to work but since it's a single instance app it just closes the second app. How can I add something ot the app to watch for this or receive a message from the second app? I know I will need to check status of what I'm doing and make sure things are saved, check security, etc but I can get all that done easily enough. I've found some examples online but none really did what I wanted them to.
I am using a CheckedListBox that is populated with Filenames (full path, i.e. C:TestTest.jpg)When I have the files that I want in the CheckedListBox I wish to click a Start Button which will process the list one at a time using an exe program that runs on the Command Line. There are arguments that need to pass to the command line as well as the file location in order for the program to process.I currently have it working but the issue is the loop finishes quickly and it is left up to the CMD.exe to finish the process. What I would like is for the LOOP to wait until each file completes processing before passing the command for the next file in the CheckedListBox.There some reasons I wish for it to work this way.
1) I would like to have a button that can Pause/Restart the Loop.
2) I would like to have a button that can Stop the Loop so the whole process can end.
3) I would like to have the Loop remove each file one by one from the CheckedListBox after it has been processed.
4) I would like to display a Message once all the files have been processed.
5) And if it were possible I would like to report the status either by text or a progress bar showing where it is at in the process.
6) And the ability to add some error handling if possible.
Since the Loop finishes so quickly as it just passes the command to the command line using the & as a seperator it is the command line that is handling the rest of the process. Because of this there is not control over it in the GUI.The code I am using allows the Command Line text to display in the Form so it won't open up a seperate window to run CMD.exe. This is the desired affect as I would like everything to appear to run from within the Form itself.
I have a program that needs to see if it is already running and if so bring the other instance to the front and then close itself. Now I figured out how to see if another instance of the program is already running using GetCurrentProcess, but how do I tell the first instance to "BringToFront" from the second instance?[code]...
I have developed some programs for processing and issue-coding electronic documents. I am teaching myself how to work with SQL Server because I want these programs to work with electronic documents imported into SQL Server as opposed to messing around in a folder stuck on the desktop, for example. From there I want to expand on the program so that it is a network enabled program.
Dim IncomingCommand As String = e.CommandLine.Item(0).ToString
If IncomingCommand.Substring(0, 2) = "-1" Then
form1.close()
End If
End If
I am trying to make the program close if the -1 string is sent with the program. See my installer allows for me to run certain programs before it actually installs, but it doesn't shut down copies of the program itself. So I have a next startup instance set to shut the program down if the -1 is received. But if the program is not running it starts up instead. This is not desired. form1.close doesn't work. e.cancel = true doesn't work, etc etc. What can I do to make the program not start during this instance.
This is going to be a lot to ask, but I'd like to convert my old GW-BASIC program to a command line program with arguments. I'd like it to operate as follows:
elapse [drive:][path]filename This is my old code.
5 CLS 10 OPEN "G:Calc.txt" FOR INPUT AS #1 20 WHILE NOT EOF(1): INPUT #1, A$, B$ 30 IF MID$(A$,3,1)=":" THEN C$="DOUBLE DIGIT":GOTO 50 40 IF MID$(A$,2,1)=":" THEN C$="SINGLE DIGIT":GOTO 120
Is it possible to compile my VB.NET project with a specific process name so that I can code to ensure that user cannot run multiple instance of the program?I have researched on the internet and found out most of them validate by process name. However, I have done a test which simply changing the exeuctable file to another name, the process name changes in the task manager as well. Thus, I don't think validating through process name works unless I can specifically assign a process name in the VB.NET project or validate through other ways?
A nice quick one I was wondering if anyone know the answer two (was shown a rough way to do this in vb6 but that was a long time ago)I have an application running in the system tray which I want as single instance (and currently have set as single instance)
However if someone double click on on the Desktop Icon or Startmenu Icon etc I want the main menu form to appear (frmMainMenu). Is it possible so that if opening the app when its already running triggers an invent in first instance rather than creating a new instance?
I'm a bioinformaticist, I'm trying to teach myself how to develop programs that are easy for everyday users to automate programs used in biological research. I thought VB would be great for helping people be more familiar with bioinformatics. Unfortunately, I'm brand new to VB and am stuck with my first program.
All I want to do is have a window pop up where the user then selects a file from an OpenFileDialog box, and pass the filename to a bioinformatics program names msconvert. What I've been doing keeps giving me a message that seems to says, "Unhandled exception has occurreed in your application. . . . File not found."
However, as you can see in my code (below) I have a MsgBox that shows that the correct file HAS been selected, and I can get the whole thing to run from command line.[code]....
I am looking for a way to make my app running in a single instance mode and showing the MainWindow of the first instance when another instance is launched.I do a quick search on the internet but I did'nt find anything to open the MainWindow of the first instance or it was for Windows Form not for WPF.
I have beginner skills using VB (am using the Express edition to learn). I would like to know how to set up a conditional statement in a Windows Form (WF) app that would check if a specific command line has been passed by another separate app that launchesthe Windows Form app using command lines, and if not passed, then the Windows Form app would shut down (exit, close).So far, I can use:
For Each s As String In My.Application.CommandLineArgs If s <> "xyz" Then Me.Close()
i want to know how to get the command line arguements inside the vb program aka parameters that you specify while running a vb program through a shortcut by specifying a parameter ??for ex: "c:myfile.exe -parameter1 -parameter2 -etc".
I have a single instance VB 2010 application I know how to communicate with the next instances run through the StartupNextInstance application event. The usual way of working with this is parsing command line arguments of the new instance and continue execution of the old instance. What I would like to do is replace the running instance with the new one. Is there any way to do this other than disabling the single instance property ?
I have been trying to fix this and make this work for pretty much three days now. I already solved one problem being, I can't use the shell on one HDD and create another file onto a different drive other then the drive that the directory of the application is running in.
EX:
If I run a program that is on the C: drive and using a working directory that is on the C: drive, I can not create a file onto the F: drive.
I got this problem when I was just using Shell(Environ$("Comspec") & " /c then the command")
So I decided to use Process()
Dim p = New Process() p.StartInfo.FileName = "F:Visual Basic ProjectsCode TestingCode TestinginDebugToolsMediaInfoMediaInfo.exe"
I would like to create a console program in VB.net that would allow parameters. What i would like to do is in the code below add parameters so the webpart page can be created from the Run menu. e.g. C:.......MyProgram.exe "Design" --This would then create the Design webpart page.
I tried looking at the internet but was not very successfull.
Module Main Public Sub Main(ByVal args As String()) Dim prj As String
I'm writing a program in vb.net. The program can be started from another program by passing some arguments or it can be lauched by clicking .exe. I'd like to show the user some options depending on where he is coming.Is the below approach correct? [code]
I wish to turn on the Single Instance Application choice in Visual Studio 2008 properties. To do so, I must choose "Enable Application Framework". When I do that, my ONLY choice is to choose a Startup Form, not a Startup object. This makes no sense to me. I have a tray application, and I check to see which form I should load, a logon form, or the main form. But since I am forced to choose a startup form, I MUST load the logon or main form to begin with. But I don't want to. I want startup code to determine which one to load first. So then I am playing with making the OTHER form invisible, even if the startup form, but that is a mess.
The code in question is in place, and it works. The project is all but wrapping up. That being said, I would love to find a better way to run this section of code in an x64 system so I have the solution ready for future projects. What I currently have in place is as follows:
Function TimeDelay(vDelay) Dim vTimmer, vTargetTime
vTimmer = TimeValue(Now)
[CODE]...
Now I know the easy way to achieve my goal would be to use the timer object in Visual Studio. The problem I ran into is I was developing an automated command line program. As such there was nothing I could attach the timer to (that I'm aware of). I just needed to pause the program for a few seconds to allow the DTSX package (SSIS file if you're not familiar) to load the file before I remove it from the staging folder.
While I was doing research for this issue I came across the old Sleep() function (referenced to a library in kernel32 as I understand it...never used this before either). When I tried to use this on my current system (64-bit system) I received stack overflow errors. Additional research lead to something called wow64, but I did not have enough time to fully research what this is / how to use it.
I am trying to create a program that downloads audio files via FTP, converts the audio to mp2 if necessary and copies them to a certain directory for consumption by our automation system. (I am a radio station engineer.)I am using the open source converter FFMpeg to convert audio files to mp2. This is a command line exectuted program. Here is the command line that I use to execute the external program with the input and output audio files at the root level: cmd.exe /k ""C:New Folderffmpeg.exe" -i "C:Test.mp3" -y "C:Test.mp2"" This command line works correctly whether I am using Shell() or System.Diagnostics.Process (Process) to execute the external program. I am going the Process route so I can know when the conversion has finished.Now, I really don't want to use the root directory for this but when I go below root with this line using Process the external program will not execute:[code]Can anyone tell me why that line will not work with Process though it works as expected with Shell()? I can't figure out how to stop the external program to get some feedback as to what its problem is.
How do I read a line from a database using WHERE? I've read this post but it doesn't really cover it and the forum search throws out the words, 'From' and 'Where' as being common. This is my bit of code but it just skips over it as if it doesn't exist so presumably there's an error, I dunno. I'm trying to read an entire line from the database where it equals the value of 'getweek' where 'getweek' is a variable.
First off, i'm still rather new to Vb.Net but am enjoying learning it, I have this code to run a shutdown:
'// Thread Process for Shutdown Process Private Sub BackgroundProcess() If System.IO.File.Exists(dbfile) = True Then Try Dim shutdownCount As Integer
[Code]...
It runs ok. Currently it looks through a number of computer names and shuts them down. But sometimes it can take up to a minute for anything to be returned by command line if for example a computer is switched off. So what i'm trying to do is get it so it doesn't continue the loop UNTIL there has been something returned by command line. Some maybe to do with While p.HasExited or something? Is this possible?
First let me say that I am not sure whether or not this should go in this section or the API section, and if it needs to be moved I apologize. My issue is fairly straight forward, but for some reason I cannot get it to work.
I am trying to send a command to a command line and then submit the command. I have been trying without success to get this to work in v2008 Express and v2010 Express, Here is the code I am trying to us:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String _
Still getting to grips with regex and have seen a few samples about that give me most of what I need so asking for opinion on this. I need to extract x words from a single line, so the regex could use w+ to get characters, however my line may contain anything inside the word like:
I'm making a program that can take arguments and run cmd line style. I'm trying to think of a good way to sort and check the arguments. I currently split the arguments into an array and use a loop to assign them to variables.[code]That works but would seriously mess up if someone left out anything. I want to know if anyone has any tips on how to parse the incoming arguments. I always like making my scripts idiot proof, cause at times i mess stuff up.