• 0

C# Screen saver?


Question

Recommended Posts

  • 0

I sort of found out the problem

When you call Process.Start, it calles the Open procedure of the file (so if you told it to open a word doc, it would do the same code as if you double clicked on it) so when the function is called instead of passing the proper commands it passes a /S instead

example

C:\Windows\system32\login.scr /S

instead of

C:\Windows\system32\login.scr /P Handle

It does the same thing when i call ShellExecute through interop

Looks like we have to find a command that doesn't call it like that.

  • 0

In my last post, i discovered the problem, in this post i worked it out

You shouldn't call Process.Start or ShellExecute, you should call WinExec as the Delphi example does, that will leave you with this.

Edit: it should work with picture boxes to, i just haven't tried it. but make sure the picture box isn't re-sizable, that could cause problems

Also, here is the code (sorry it's in vb, i dont know much c#, but it's easy to convert)

Whack this is the declarations bit

Private Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Integer) As Integer

call this to load the screen saver, the 1 at the end is for the constant SW_SHOW in Delphi and SW_SHOWNORMAL in vb

Also, the Flurry screen saver is just on my system, but it's cool and i recommend getting it.

WinExec("C:\Windows\system32\Flurry.scr /p " & Me.Handle.ToString, 1)

post-47-1093403729.png

Edited by The_Decryptor
  • 0

And here it is in a picture box

here's what i changed

Old

WinExec("C:\Windows\system32\Flurry.scr /p " & Me.Handle.ToString, 1)

New

WinExec("C:\Windows\system32\Flurry.scr /p " & PictureBox1.Handle.ToString, 1)

Also, rajputwarrior, i know, i got it on my eMac :yes:

Edit: darkmark327, it doesn't look like it needs your code to work, what was the problem that needed you to make it?

post-47-1093404645.png

  • 0
And here it is in a picture box

here's what i changed

Old

WinExec("C:\Windows\system32\Flurry.scr /p " & Me.Handle.ToString, 1)

New

WinExec("C:\Windows\system32\Flurry.scr /p " & PictureBox1.Handle.ToString, 1)

Also, rajputwarrior, i know, i got it on my eMac :yes:

Well, congrats.

When I was using ShellNotifyIcon (for balloon tips in weathalert), it takes a handle to the window--but NotifyIcons have their own hidden windows, so passing my window handle didn't work. I failed to realize that's not an issue for you because you're using the picturebox itself rather than its window handle.

Edited by darkmark327
  • 0

Thanks

Also, i haven't really played around with the Shell_NotifyIcon API's in .net i have used the NotifyIcon component more, so i haven't come across your problem before.

Edit: i hadn't heard of your program before, but i have to say it's mighty nice :yes:

  • 0

In some cases, the problem was that there was no .net equivalent for the WinExec function (that i know of) if there was this might have been solved a bit quicker.

Edit: I'm going now, i was only supposed to be on the net for 10 mins, that was a hour ago, so ill be back on in a few hours.

Edited by The_Decryptor
  • 0

Well, the screen saver should detect for the app's windows to be closed or destroyed, that what happens when the display control panel is closed, so the scr will exit, but in your case (and i think how ms does it) you should check to see if the screen saver is changed, when it is kill the screen saver process, then reload the new screen saver, ill look for code for you to do it, i havent tried it before so i have to idea.

Edit: You're welcome :)

Edited by The_Decryptor
  • 0

I already have working code, but it's just to general (it could stop alot of programs instead of just the screen saver :no: )

I'm just working on making it better (and faster, the code returns a array, it takes a while to gather (like 2 or 3 seconds))

  • 0

Ok, i have fully working (and safe hopefully) code, i was having a problem, i was checking for the file name, but windows was returning the path and file name, i fixed that, Also, i have attached the whole program i wrote, not just posted code, i dont know if you have vb installed, if you dont just tell me and i'll put up the code.

ScreenSaver_Shower_Thingy.rar

  • 0

OK. The_Decryptor's mentioning of not using shell execute set it off for me. I've got it with native .NET code.

Create a class level variable to store the process that you create so you can kill it when you need to. In this case, it's called _currentScr.

// member var
Process _currentScr;
...

// the code you'd use to load the screensaver
 	 string scrPath;
 	 if( openFileDialog1.ShowDialog(this) == DialogResult.OK )
 	 {
    scrPath = openFileDialog1.FileName;
    if( _currentScr != null )
    {
   	 _currentScr.Kill();
   	 _currentScr = null;
   	 pictureBox1.Invalidate();
    }

    ProcessStartInfo psi = new ProcessStartInfo( scrPath, "/p " + pictureBox1.Handle.ToString() );
    psi.UseShellExecute = false;
    _currentScr = Process.Start( psi );
 	 }

Just call _currentScr.Kill() to end the process.

BTW, it's the UseShellExecute = false that makes the difference. It's true by default.

Edited by weenur
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Qualcomm's new Snapdragon Reality Elite chip brings on-device AI to Android XR devices by Pradeep Viswanathan Qualcomm has been delivering dedicated SoCs for mixed reality and spatial computing devices for several years. The journey started with the Snapdragon XR1, followed by the Snapdragon XR2 in 2019, the Snapdragon XR2 Gen 2 in September 2023, and finally the Snapdragon XR2+ Gen 2 in 2024. Today, Qualcomm announced a major upgrade with the new Snapdragon Reality Elite Platform, which targets premium mixed reality and spatial computing devices. OEMs can use this SoC to power both all-in-one video-see-through headsets and lightweight, tethered optical-see-through glasses. Qualcomm highlighted that the Snapdragon Reality Elite will power the next wave of Android XR devices coming later this year. These wearables will offer better visuals, improved power efficiency, and deeper on-device AI integration compared to the previous generation. The Snapdragon Reality Elite can deliver up to 48 TOPS of AI performance, allowing large language models and large vision models to run directly on the device for the first time. In addition to enabling new spatial AI experiences, these new AI capabilities will improve head and hand tracking, as well as see-through features. On the performance side, the Snapdragon Reality Elite offers up to 60% higher GPU performance, up to 30% higher CPU performance, and up to 160% higher NPU performance compared to the previous generation. The platform supports visuals of up to 4.4K per eye at 90 frames per second for sharper images and smoother motion. Qualcomm is also claiming significant efficiency improvements. The Snapdragon Reality Elite can offer up to 20% longer battery life under the same workload. More importantly, the chipset can run up to 12 degrees Celsius cooler under load, making headsets more comfortable for users to wear for longer periods. The platform also includes improvements to video see-through, featuring lower latency and better image quality. Qualcomm states that its EVA hardware block helps accelerate demanding computer vision workloads, improving how digital content blends with the real world.
    • Umm... GitHub continues to use AWS. That's the story, that's the headline. There's no "new" news here. GitHub continues to require additional capacity beyond the originally-planned Azure allocations. There's nothing special about this; nothing noteworthy. They're still using AWS' infra until the cutover is complete.
    • Hello, Also known for https://www.theguardian.com/technology/2009/jan/29/adware-internet.   Regards, Aryeh Goretsky    
    • Hello, I have used a few TEAM Group SSDs, USB flash drives, and Micro SDXC cards in the past. They all seemed to work fine. Regards, Aryeh Goretsky
    • "just $100 per TB"? Just? Are we trying to make this seem like the new normal? Kinda weird to make it sound like that is not a ridiculously expensive asking price.
  • Recent Achievements

    • Collaborator
      vjlex earned a badge
      Collaborator
    • Reacting Well
      Dys Topia earned a badge
      Reacting Well
    • Conversation Starter
      NovaEdgeX earned a badge
      Conversation Starter
    • One Year In
      Console General earned a badge
      One Year In
    • Week One Done
      Twozo Technologies earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      517
    2. 2
      +Edouard
      182
    3. 3
      PsYcHoKiLLa
      106
    4. 4
      Steven P.
      88
    5. 5
      ATLien_0
      68
  • Tell a friend

    Love Neowin? Tell a friend!