Getting Information From A Shell'ed Process Into The VBA Program?
Jul 1, 2010
So, let's say that I have a VBA application inside of whatever Office Application. I have created a command-line VB.net program to do all of the fun web-services stuff.Okay, the VBA application calls Shell() to run the command line program. Now, what is the best way to get information (a tracking number for a package) from the VB.net program back into the VBA program?
I've created a very basic WF Shell project which runs an EXE (xyz.exe) in the WF Shell project's Resource folder. I can get a command line working from the Shell to open the other EXE (xyz.exe). But, I can't get code to close the Shell project's other EXE (xyz.exe) once it is opened. The xyz.exe windows called by the Shell continues to stay open even if I pass a "close" command line to the Shell.
The following code (which Paul suggested in another posting) will not close the other (xyz.exe) EXE's running process (when called by the Shell). While the Shell seems to be able to return it's called subordinate EXE's (xyz.exe) ID, not sure how to use such an ID to close its process.
Imports System.Diagnostics Module Module1 Dim resourceFolder As String = Application.StartupPath & "Resources"
I would like to launch a command line exe I created. For now it's a test program that writes Hello World to the console. I can launch it, but the shell window it displays it in only stays for a split second.
I know I can add a line to my console mode program (readline). But I would like to control it from the process launch. I will be using console mode programs that I did not write myself, and many of them don't stall the output. I can't find the right properties and methods to control the default shell behavior!
I have an issue in my project I am programming in both Matlab (Matlab2011a) and Visual Basic (VS2008).I've created a .exe file from my matlab code. It works well when I click on it with my mouse.But I need to run it within Visual Basic. I know it's possible to call .exe files with Shell() or Process.Start(), and it works well for files such as firefox.exe or notepad.exe. However, it doesn't work when I call my own .exe file ...It's weird because when I look to the Task Manager while trying to call it (within VB), I can see the process starting and ending, but its output doesn't appear.
1: Attached threads Rather then list all attached threads in a list view. I wanted total count.This is my own little work around.
Dim oThreads As ProcessThreadCollection = ProcessID.Threads Dim arryThreads As New List(Of Integer) For x As Integer = 0 To oThreads.Count - 1
[code]....
This there a direct call to get the total number? Adding to an array seems a tad silly.
2: Individual CPU Can't find it on MSDN. Any links that will go into detail on Application CPU and maybe even more detail on features on what i could add.
I am trying to execute the shell script in vb.net.[code]...
The script doesn't create the outfile mentioned in -out switch. The path mentioned is correct and also the command with switches is correct. It runs well in command prompt but not in the program. [code]...
i am trying to write a little program that checks for a process and kills is.here is the
Dim p As Process = Process.GetProcessesByName("Cheat Engine")(0) p.CloseMainWindow()[code]...
My problem is it�s woking ,yes if the programm ,,Cheat Engine" is running the process is getting killed.But if the program is not running my program crashes.
I have a program that starts another program after setting the regkeys basically the program continually syncs the calandar of outlook and another application.I set the regkeys than launch the c:sync.exe app. I have tried a simple process.start and launching the process as a thread and they both do the same thing: The other process starts and works as it should but my main program goes "White screen" or "not responding" until the process.start has exited.
I want the process.start to run in the background so if users click in my main app it responds and truly that they can access the context menu of my main app from the taskbar while the process.start is running.
I have a vb.net application which runs as a service. I also have another Windows application that serves as the service interface.In brief the service watches some folders for new files and imports them into various databases. In the service I have an class called 'importFile' containing basic properties such as 'FileName' and 'ImportStatus'. With each new incoming file I create a new instance of 'importFile' and add it to a list object called myFiles which is of the type: List (of importFile).Currently in my service im writing a few object details (such as ImportStatus) to an XML config file which is in turn read by the service interface application. I want to expose more information from the service to the interface, and communicating via xml doesn't feel like its the most efficient method.My question is how do I expose live objects, such as 'myFiles' in my service to my interface application? I think this can be done via the Process class but all my efforts have so far failed.I'm thinking that the solution may look something like the following, but im not too sure what im doing and could be way off:
I'm going to attempt to make a shell replacement for the Windows default shell: explorer.exe. I'm not sure if its possible using Vb.Net, but I can't seem why not. My end goal is to use a custom made shell for a Windows Preinstallation Environment instead of the default command prompt. I plan to use a 3rd party program to compile the program with the .NET Framework. Otherwise, it wouldn't work because Windows PE does not support the .NET Framework.
I'm launching an Access ADE, using Tony Toews auto FE program. The AutoFE programs will, if newer version available, copy the latest version of the ADE from the server, then launch it. My code looks like:
Dim stAutoFE As String = "V:Appsautofestartmdb.exe /cmd /inifile: " & """" & "V:AppsAutoFESSP.ini" & """" Shell(stAutoFE, AppWinStyle.Hide, True) System.Threading.Thread.Sleep(1000) ' Time delay
[code]....
I had to put the Sleep delay in, otherwise the GetObject would open the ADE a second time.But I don't know how long the copy from the server will take, so I need to remove that Sleep line and check that the ADE has opened.
I'm trying to make a per-user shell for a Vista box to simplify use of a particular system for my users. I have no problem making a program that I want to use and I am familiar with the process of editin the registry to make my program the users shell but I've run into a snag.
Whenever a user with the custom shell logs on, there is a delay just after they enter their password where the system will sit at "Preparing Desktop" for about 30 seconds. I know for a fact that the user desktop is already made and this shouldn't be taking that long.
I've poked around on the web and see various places saying that winlogon is waiting for the shell to flag a "shell ready" flag of some sort but I am unfamiliar with any such flag.
Anyone know of such a fix for the long login time or anything about a shell ready flag?
visual basic 2010 after converting a program from visual basic 2008 is stating that the Shell function is a namespace and cannot be used as an expression. this can be fixed with the create sub feature but when debugging causes an error stating that there is a nohandled exception.
I need to be able to kick off a vb.net program on a windows server from a unix shell script on an AIX server. What what I need to do to make this possible? I'm a newbie on the .Net side, but I was thinking, maybe make the vb.net program some sort of web service then have the unix shell script invoke that somehow
im working on a little project what executes a bat file on a button click using this command:Interaction.Shell("read.bat", AppWinStyle.NormalFocus, True, -1)however when this is executed the program will become unresponsive while it is running... this may be simple but is there a way i can make my program be responsive and for it to execute in the background?
I have the following problem. I have a worker in VB .net (2010) which runs a shell-program. The shell program is a service and output stuff like: Server initializing... Server opening port... more info...
I am able to 'catch' the output of the shell and add it to a textbox (using set text function). And I am able to Cancel the worker by clicking on a stopbutton, however when there is no more output by the shell I cannot stop the worker anymore. At least I suspect that's the case. I've tried checking for endofstream (commented section) but that doesn't work. I've also tried to same code with some test text in stead of 'clsProcess.StandardOutput.ReadLine' and that also works. So I came to the conclusion it must have something to do with clsProcess.StandardOutput.ReadLine being at the end?
The command procedure calls a Java program that opens a dialog box, the cmd and java exe shows up in task manager, so I know it is being called, but no dialog box. I know normally having anything show up on a server that requires user interaction is a bad idea, but in the case, the users remote into the server to do their work. (They have to because of the environment) So, there is no problem with them being able to respond to a dialog box. I just need it to show up.
(I cannot rewrite the Java program as the latest source is not the right version) Running, Framework 2.0, 3.5.
I wrote the following lines of code within the even handler for a Process_Exited event. The really weird thing is that on the fifth line I get the error "Process must exit before requested informaiton can be determined. (When trying to access the Exit Time & Exit Code)
Private Sub AssociatedProcess_Exited(ByVal sender As Object, ByVal e As System.EventArgs) Handles
AssociatedProcess.Exited Do Until AssociatedProcess.HasExited = True
Is there a possibillity to get in a vb program information from a called vb program?For example: Dim id As Integer = Shell("C:program.exe id_1") program.exe is a vb windows form program and must return a value back.
I'm trying to use the Shell to have my application call an external application but its not working...I don't understand why. I get the following error: 'System.windows.shell' is a namespace and cannot be used as an expression!
Heres my code....any ideas what I'm doing wrong. Its got to be a simple...stupid error.
Private Sub mnuUpgrade_Click(ByVal Ctrl As Microsoft.Expression.Web.Interop.Legacy.CommandBarButton, ByRef CancelDefault As Boolean) Handles mnuUpgrade.Click
I mainly just build little apps that are mainly useful to me. So please be gentle.
I am currently working on a program that will paste text into a second program. The text will paste into several different fields automatically.
The problem I am running into is that I need my program to check for running processes(as the second app will already be running). I seem to have done this just fine. When I then need to "use" that process
I use myprocess.start()
This of course starts a second instance of the application in question.
How do I basically use a process that is running as if I used the command .start()?
I am making a function of an application that when a function is called the application will close all processes that are owned by the user and were started after a specific point. My thoughts on this would be to trigger an event in my application every time a process is started and ended, and only if the processes is owned by the user, the event should get information (e.g. the process ID, name, etc) about that process and add or remove that information to/from an array depending on if the process starts or ends. Then when a function is called end all the processes in that array.
I have written a windows service that is meant to launch a notepad when a specific action happens. The problem i have is that even though the service launches notepad, the actual notepad it self is NOT visible. I know that it has been launced because i can see the process in the task manager. By the way the process is listed as a SYSTEM process rather than a process under my user name (i believe that is because my process is a "LocalSystem" one).