|
Why don't you cache values, and then display them all every two seconds ? Surely if you only show the most recent value and it's changed more than once in two seconds, that data is insignificant ?
Anyhow, that's what I would do, every two seconds make a copy of the data ( so you can keep collecting at the same time, but your data is an accurate 'snapshot' of a moment in time ) and then drawn to a bitmap, which is drawn to the screen in one go.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
I did some searching and found someone that used IE's cache to do this cause the axweb thing supposedly saves there.
But i dont like that approach...any way to extract them from maybe the Document property?
|
|
|
|
|
You can get the images of the document you're on, sure, look at document.images collection.
If you want to get the list of images previously previewed in IE in the past, the only way AFAIK to do this would be to search through the IE cache.
Tech, life, family, faith: Give me a visit.
I'm currently blogging about: He has a funny face. And he's my son.
Judah Himango
|
|
|
|
|
I tried that way...but that property isn't like a regular collection that i can iterate through. It expects me to know the name and index of where the image is in collection, unless i'm mistaken.
|
|
|
|
|
I need to shutdown explorer programmatically. I had to do this once in a C++ project and I used the following code:
HWND hwndShell = NULL;
hwndShell = FindWindow("Progman", NULL); // Locate the Windows shell
if(hwndShell != NULL)
{
PostMessage(hwndShell, WM_QUIT, 0, 0L)// Tell the Windows shell to quit
}
Any ideas on how to do this in C#?
Thanks!
Ian
|
|
|
|
|
You can do this using the System.Diagnostics namespace. The following code will kill explorer.exe:
Process[] RunningProcesses = Process.GetProcessesByName("explorer");
Process proc = new Process();
foreach(Process p in RunningProcesses)
{
if(p.ProcessName == "explorer")
{
proc = p;
break;
}
}
proc.Kill();
When I tested it however explorer.exe restarted a few seconds after it was killed. This might be due to some program I had running, but I'm not sure.
|
|
|
|
|
Thanks alot! I wonder how you kill it for good? I want to control when it starts up again. Anyone know how to do that?
Thanks!
Ian
|
|
|
|
|
You can't. Explorer automatically restarts itself.
But, I seem to, vaguely(!), remember a policy somewhere that controls this. I can't find it and I can't remember where I saw it, though.
BTW: Why on earth would you want to do this anyway?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Why? It's a long story...
The C++ code in the original post shuts down explorer indefinately. Is the limitation a C# limitation?
|
|
|
|
|
Ian Bowler wrote:
The C++ code in the original post shuts down explorer indefinately. Is the limitation a C# limitation?
This is, I believe, because you sent the process the WM_QUIT message, with Process.Kill() you kill it without sending it the WM_QUIT message.
In order to keep explorer from restarting you could either run a loop on a new thread, which continously checks if explorer has been restarted and kills it again if neccessary (this isn't really the best idea).
Or (and this should be the better idea) you could import the FindWindow and PostMessage methods with DllImport and use them the same way as in C++;
|
|
|
|
|
Thanks! I'll give it a whirl...
-Ian
|
|
|
|
|
I've got time.
Honestly, if an application killed off Explorer for me, without my permission, I'd want to know where on earth this person was who wrote it, for some very not-so-nice reasons...
Please tell me this isn't being deployed into the real world?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I understand your concerns and curiosity. I'm not going to be shutting down explorer all willy-nilly. There's a good reason for it in the context of what I'm working on.
For those of you that may wonder how this all turned out, I had to import the User32.dll functions, FindWindow and PostMessage (as tommazzo suggested). The final code looks like this:
public class Win32
{
public Win32(){}
[DllImport("User32.dll")]
private static extern IntPtr FindWindow(string ClassName,
string WindowName);
[DllImport("User32.dll")]
private static extern Boolean PostMessage(IntPtr hWnd,
uint Msg,
IntPtr wParam,
IntPtr lParam);
public bool ShutdownExplorer()
{
Boolean bSuccess = false;
IntPtr Handle = new IntPtr(0);
// Get a handle to explorer.exe
Handle = FindWindow("Progman", null);
// Shutdown explorer.exe
if(Handle != IntPtr.Zero) bSuccess = PostMessage(Handle,
0x0012,
IntPtr.Zero,
Ptr.Zero);
return bSuccess;
}
}
Thanks tommazzo for the solution. Thanks Dave for your insights.
Regards,
Ian
|
|
|
|
|
tommazzo wrote:
When I tested it however explorer.exe restarted a few seconds after it was killed.
It's supposed to do this. By default, Explorer automatically restarts itself if it's shutdown without a user session logoff. Sometimes, though, it doesn't restart itself. When this happens, you can still hit Ctrl-Alt-Del, start the Task Manager, click on File/New Task (Run), then type CMD in the prompt, NOT EXPLORER! Instead, type CMD and in the resulting command window, type START EXPLORER.
For some reason, if Explorer crashes and you type EXPLORER in the Start/Run box, it won't restart. Though, typing the START EXPLORER command in a CMD window works. Wierd...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I am writing a frontend to the ffmpeg program so I can convert multimedia files to a Playstation Portable format. I am using the Process Class with redirected outout so I don't have a console window popup. Now if I run the Program Through the IDE (Debug or Release) it works flawlessly. If I run the generated exe outside of the IDE I get errors from the program and the conversion does not complete or even do anything wright. I know this could be a ffmpeg issue but the only difference from working and not working is the IDE execution. I have checked the environment variables and there is only one difference a debug varibale is set in the IDE and I have artificaly set that just to see if that would work and it didn't.
Any Ideas?
Thanks
Cyber
|
|
|
|
|
There's more than just the IDE being there or not, the current directory also changes. So, I have a couple questions...
Does your application supply the full paths or all the files involved with ffmpeg? Does your code consider than ffmpeg might fail and log everything that came out of the session into a file somewhere? What errors are returned by ffmpeg when you shellexecute it?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Here is my Code:
Process P2 = new Process();
P2.StartInfo.UseShellExecute = false;
P2.StartInfo.FileName = Environment.CurrentDirectory + @"\ffmpeg.exe";
P2.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
P2.StartInfo.RedirectStandardOutput = true;
P2.StartInfo.RedirectStandardError = true;
P2.StartInfo.Arguments = strCmd;
P2.StartInfo.CreateNoWindow = true;
P2.Start();
There is not exit code like info the program just can't read the input files correctly. I do have all the files in the Environment.CurrentDirectory and have even at one point appended the Environment.CurrentDirectory to the Environment Variable "PATH" statement.
Also if I allow the console box to appear with the redirect turned off. It works on both situations.
Thanks,
Cyber
|
|
|
|
|
I didn't ask for an exit code. I asked if you were reading the redirected output and dumping it into a file for later review. If the program can't read the files, or any other error ffmpeg complains about, it would be displayed in either one of the streams. If you were reading those streams, then the output could be dumped into a file for debugging.
Now, since your doing this to prevent a console window from showing up, it's entirely possible that ffmpeg doesn't support that. It might actually need a console window because the app is trying to write directly to the screen buffer in that window. If there is no console window, no screen buffer. No screen buffer, BOOM!
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I am capturing both streams into a RichTextBox for Debugging and no usefull info is in there for finding out what is going on.
Quote
"Now, since your doing this to prevent a console window from showing up, it's entirely possible that ffmpeg doesn't support that. It might actually need a console window because the app is trying to write directly to the screen buffer in that window. If there is no console window, no screen buffer. No screen buffer, BOOM!"
It works fine if I use the the Debug Start option from the Menu.
Thanks,
Cyber
|
|
|
|
|
In that case, I have no idea what's going on. I've never had a problem shelling another process like this.
The only thing I can think of is don't use the CurrentDirectory. I've always used full path specifiers for all of my file access. Even the ones that are used as command line parameters in other programs. I just don't believe in leaving something like the "CurrentDirectory" to chance and calling it "reliable."
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi,
I am using Syncfusion.Windows.Forms.HTMLUI.HTMLUIControl() to open a specific url in an html browser. The documentation gives me an example that does work; however, I want to modify it so that the url is automatically displayed when the winform is rendered.
Here is what works (NOTE: The ... indicates code that I have not shown here, for brevity's sake):
<br />
...<br />
#region Windows Form Designer generated code<br />
...<br />
private void InitializeComponent()<br />
{<br />
...<br />
this.textBox1.Text = "http://www.google.com";<br />
...<br />
}<br />
...<br />
<br />
[STAThread]<br />
static void Main() <br />
{<br />
Application.Run(new Form1());<br />
}<br />
<br />
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)<br />
{<br />
if( ( ( int )e.KeyChar ) == 13 )<br />
{<br />
LoadDocument( textBox1.Text );<br />
}<br />
}<br />
<br />
private void LoadDocument( string path )<br />
{<br />
if( path == null )<br />
throw new ArgumentNullException( "path" );<br />
<br />
if( path.Length == 0 )<br />
throw new ArgumentException( "path - string can not be empty" );<br />
<br />
try<br />
{<br />
Uri uri = new Uri( path );<br />
htmluiControl1.LoadHTML( uri );<br />
}<br />
catch( Exception )<br />
{<br />
ShowError();<br />
}<br />
}<br />
...<br />
Again, what I want, is to have the url automatically loaded when the winform is rendered and eliminate the textbox and the need for the user to press the enter key.
Thank you in advance for any help you can give me.
Anne
|
|
|
|
|
We don't support 3rd party controls here, simply because there are thousands of them to play with. It's impossible for anyone to know everything about every control and extremely unlikely that someone who has worked with the control will ever see your post.
But, is there anything wrong with calling with calling the control's LoadHTML() method from inside the Form Load event, or maybe Form Activate?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thank you so much for your help... Sorry for the 3rd party control question -- ooops...
I will try what you suggest and also contact the maker of that control.
Thanks again,
Anne
|
|
|
|
|
Hi,
Could you please explain to me the purpose of using DataRelation? I seem to understand it wrong, hence implement it wrong..
Please correct me if I am wrong ( i know I am wrong), that DataRelation is used to setup a relationship between datatables and to create a new table with all of the attributes of the 2 tables?
What I am trying to implement is to combine 3 database tables to create a new table that has only the attributes I want..
Elapid For The Win
|
|
|
|
|
Right on the first part, wrong on the rest.
A DataRelation is the analog of a SQL Server foreign key constraint. It does relate two DataTables on a user-defined key in a parent/child relationship. It does not, however, merge the columns of two or more DataTables into a unified view.
There's ample information in MSDN on this topic.
The most exciting phrase to hear in science, the one that heralds the most discoveries, is not 'Eureka!' ('I found it!') but 'That's funny...’
|
|
|
|