|
Hi
My C# windows based application is calling Perl Script by using Process.Start and it does pass couple of parameters.
I could able to see those parameters in Perl on one specific systems, rest of the PCs are receiving properlly. Even on the same PC if i use BAT file insted Perl it is working well. Is there any specific settings for Perl?
Thanks in Advance
|
|
|
|
|
satsumatable wrote: Is there any specific settings for Perl?
I don't think so. Show us the code?
|
|
|
|
|
I try starting the default browser using the Process Class as follows:
Process p = Process.Start(GetDefaultBrowser(), "http://www.google.com");
I get back a Process object in 'p' but the 'HasExited' flag is true and the MainWindow handle is IntPtr.Zero. However the default browser did open (in this case IE7) and displayed Google's home page. Checking the PID of the this browser in Task Manager and it has a different PID then the PID in the 'p' object I received in the call to Process.Start() above.
I tried the alternate method of starting a Process as follows:
Process p = new Process();<br />
p.StartInfo.FileName = GetDefaultBrowser();<br />
p.StartInfo.Arguments = u.AbsoluteUri;<br />
p.Start();
and get the same result.
I dug deeper and discovered that the process that launched the IE browser that is displayed on the desktop was a process called ieuser.exe. I would not mind so much but there is no way I can figure out what the new process is since the StartInfo of the new process is empty.
The same application does not have this problem on XP.
My first questions is what the heck is going on?
Secondly, does anyone know how to work around this either by ensuring the process I start is the one that runs or determining which Process is displaying the URL?
Regards
David
|
|
|
|
|
It seems that the process that you start calls another application and quits itself. Try running process like this:
Process p = Process.Start("http://www.google.com");
Giorgi Dalakishvili
#region signature
my articles
#endregion
|
|
|
|
|
Giorgi Dalakishvili wrote: It seems that the process that you start calls another application and quits itself. Try running process like this:
Process p = Process.Start("http://www.google.com");
Thank you for the reply, OK tried that and still get same result. I agree, when IE is launched it appears to be handing off to 'ieuser.exe' which creates a new process and the original is exiting. I base this on looking at the 'Created by Process' attribute of the process that is displaying the URL, it points to the PID of 'ieuser.exe' This appears to be some new thing on Vista.
The only work around I have been able to come up with and it is a real hack is to get a list of all processes for iexplorer.exe before calling Process.Start() and then do another after and compare the lists. The new process for iexplorer.exe is the one I want (I hope) and I am good to go. The weakness of this workaround is that it can take a second or two for the process to appear in the Process List and a user could open a browser at the same time and I would not be able to tell the difference.
David
|
|
|
|
|
|
Thank you for the link but when I click it I get a 404 resource not found. Has the page moved?
David
|
|
|
|
|
|
OK got a problem here with our firewall and proxy server. Once I connected to s different network I can get to the links. The WMI example is interesting, I 'll give it a try. I do like the idea of letting an event tell me what was created and deleted, should give me a better idea of what is going on. Thanks again for all you help.
David
|
|
|
|
|
Glad to help you
Giorgi Dalakishvili
#region signature
my articles
#endregion
|
|
|
|
|
Okay, so I've been trying to find an answer to this for a while and either I'm not looking in the right place or it's not out there. I figured I'd post here while I continue my search to see if anyone has encountered this. I'm writing a WCF service that needs to accept a System.Exception parameter. I have this done and it's working, problem is that all other exceptions that derive from System.Exception (e.g. ArgumentException) are not recognized, since System.Exception is a System class and not one I created I can't very well decorate it with the KnownType attribute, at least I don't think I can. Does anyone know how I can accept all exception types as a parameter?
- Arcond
|
|
|
|
|
Is it better to load images from xml file or from the folders. Currently I save just the path in xml and load from the image director created on windows. Thanks
|
|
|
|
|
I would imagine that if you load an image from a file that is just the image then that would be faster than extracting a base64 representation out of an XML file then converting it to binary before you can consider processing it.
|
|
|
|
|
YmFzZSA2NCBpcyB0aGUgc2hpem5pdCE=
but wasteful when you want to load just binary data.
Note the above base 64 string, was originally a 23 char string (thus 23bytes) that would be saved in XML as a 32 char string (32 bytes) plus the over head of decoding
-Spacix
All your skynet questions[ ^] belong to solved
I dislike the black-and-white voting system on questions/answers.
|
|
|
|
|
Isn't that what I was saying?
|
|
|
|
|
Yep, just adding to your post with an example for him to follow
-Spacix
All your skynet questions[ ^] belong to solved
I dislike the black-and-white voting system on questions/answers.
|
|
|
|
|
I have a small C# command line app that uses a COM server component written by a 3rd party. The COM server triggers exposes events which I can subscribe to using delegates. However my function callbacks are invoked in a different thread than the main thread. Is there a way to "post" back to the main thread? I don't have a GUI, and the sample program that came with the component uses a GUI and the Control.BeginInvoke methods to post back to the main thread. Is there an alternate way to do this? I'm using .Net 1.1, I could migrate to 2.0, but that's as "high" as I can go.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
VCF Blog
|
|
|
|
|
Jim Crafton wrote: I don't have a GUI
Then you do not need it.
|
|
|
|
|
Thanks, I'll be breathlessly waiting for you to tell me the color of the sky later on
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
VCF Blog
|
|
|
|
|
enum ColorOfSky
{
Blue,
Gray,
Black
}
Really HTH
|
|
|
|
|
I am not sure I understand what you are getting at.
AFAIK, all Control.Invoke does, it the execute the delegate on the control's thread, and this is done by queuing the delegate in the control's message loop.
|
|
|
|
|
You're right got Control.Invoke - that's sort of the equivalent of SendMessage, a blocking call. But Control.BeginInvoke is kind of like PostMessage, it posts the delegate callback to the control's thread that it belongs too (usually the main UI thread), and the callback gets executed in the that threads context.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
VCF Blog
|
|
|
|
|
So this means you make an async call to this 3rd party control? What mechanism do you use to keep the main thread from exiting?
My COM is a little rusty but can't you force an Apartment model on the control?
led mike
|
|
|
|
|
Actually other way around (sort of). The 3rd party triggers "events" via COM's Connection Point mechanism. .Net nicely wraps this up using delegates. However, due to the way the 3rd party control is written, these delegates are getting fired in a different thread than the main one, and it appears that I need be in the main thread to make calls on the 3rd part COM object.
So what I'm would like is a way to "post" a call back to the main thread. One way I had thought of was using an AutoResetEvent and making up my own "event" queue, but this seems like a lot of silly work to do something that I would expect the framework to support out of the box. There must be something I'm missing.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
VCF Blog
|
|
|
|
|
Nothing wrong with using an event as long as the design of your main thread allows it to be blocked. That's why I asked how you are keeping the main thread from exiting.
led mike
|
|
|
|