• 0

C# Screen saver?


Question

Recommended Posts

  • 0
Do you know how can I get the name of a screen saver? I want to have a combo box with screen savers names like in the screen savers menu. For example, my screen saver is "c:\windows\system32\myss.scr" - Can I get its name ?

You can search all files with ".src" in x:\win\system32

But this will spend times.l

  • 0

Aww, my code isn't needed anymore :(

But i will check out the problem with it not killing the screensaver, it works perfectly here.

Edit: Yeah, weenur, i looked at your code and it's superior than mine, at least my code was good for something

Also, my code is killing the screen saver here, so who knows.

Edited by The_Decryptor
  • 0

Lol, i was just going to post that i got weenur's code and improved on it (sorry weenur)

It's all Object Orientated now, so you call new on the module, supply the file name and Control to paint it on (and it's overloaded with directories to)

Then it has the Functions:

ShowScreenSaver

ShowScreenSaverConfig

ShowScreenSaverPreview

KillScreenSaver

Ill post it if you want, but if it's working in your code i wouldn't mess with it.

  • 0

I have absolutely no idea, but ill start working on it now.

Also, just wondering, what is this program your working on?

Edit: Okay, worked out how windows get's the name, it reads the name from the first string resource in the first string table in the file, now lets see how to access resources from managed code.

Edited by The_Decryptor
  • 0

Actually its a plugin for a program called Desktop Sidebar. It puts a toolbar on the side of the screen and allows you to launch programs, see video, mail and it has also an RSS aggresor... Great program (I suggest anyone to use it :) ). So I develop a plugin for it. I've already distrobuted the beta verion here. This is a plugin which allows users to see their screen savers on the desktop sidebar program. Already has about 47 downloads :laugh:

Hope you can find the code about the resources.

  • 0

Im on a roll lately, here is the code to get the name of the screen saver (again, sorry it's in vb)

API Declarations

? ?Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Integer) As Integer
 ? ?Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Integer
 ? ?Private Declare Function LoadString Lib "user32" Alias "LoadStringA" (ByVal hInstance As Integer, ByVal wID As Integer, ByVal lpBuffer As String, ByVal nBufferMax As Integer) As Integer

Code (Note, i made this as a function so it's easier to work with)

? ?Public Function GetScreenSaverName() As String
 ? ? ? ?Dim ScreenSaverHandle As Integer
 ? ? ? ?Dim ScreenSaverName As String = New String(Chr(0), 255)
 ? ? ? ?ScreenSaverHandle = LoadLibrary(scrFolder & scrPath)
 ? ? ? ?LoadString(ScreenSaverHandle, 1, ScreenSaverName, 255)
 ? ? ? ?FreeLibrary(ScreenSaverHandle)
 ? ? ? ?Return ScreenSaverName.Trim(Chr(0))
 ? ?End Function

the bit of code that says "scrFolder & scrPath" in the function LoadLibrary is the path to the .scr file (e.g. C:\WINDOWS\System32\logon.scr)

Edit: just changed the code a bit

Edited by The_Decryptor
  • 0

This is just to show that the code works now, this is my ScreenSaver Shower Thingy updated to use the object orientated ScreenSaver class i based off weenur's code, and my code to get the name

Notice the word Flurry in the caption of the group box

post-47-1093528664.png

Edited by The_Decryptor
  • 0

It doesn't work for me :no: Can you convert it to c#? I only need

Public Function GetScreenSaverName() As String
       Dim ScreenSaverHandle As Integer
       Dim ScreenSaverName As String = New String(Chr(0), 255)
       ScreenSaverHandle = LoadLibrary(scrFolder & scrPath)
       LoadString(ScreenSaverHandle, 1, ScreenSaverName, 255)
       FreeLibrary(ScreenSaverHandle)
       Return ScreenSaverName.Trim(Chr(0))
   End Function

this. My converter doesn't conver Chr(0). I tried to replace it with something else but all I get is a blank string. Can you do it ?

  • 0
It doesn't work for me  :no: Can you convert it to c#? I only need

Public Function GetScreenSaverName() As String
       Dim ScreenSaverHandle As Integer
       Dim ScreenSaverName As String = New String(Chr(0), 255)
       ScreenSaverHandle = LoadLibrary(scrFolder & scrPath)
       LoadString(ScreenSaverHandle, 1, ScreenSaverName, 255)
       FreeLibrary(ScreenSaverHandle)
       Return ScreenSaverName.Trim(Chr(0))
   End Function

this. My converter doesn't conver Chr(0). I tried to replace it with something else but all I get is a blank string. Can you do it ?

public string GetScreenSaverName()
{
    int scrHandle;
    string scrName = new string( '\0', 25 ); // note that according to the specs of a screensaver, the name can never be longer than 25 chars.

    scrHandle = LoadLibrary( scrFolder + scrPath );
    LoadString( scrHandle, 1, scrName, 25 );
    FreeLibrary( scrHandle );
    return scrName.Trim();
}

Edited by weenur
  • 0

I get the same thing. Wierd.

HMODULE LoadLibrary(LPCTSTR lpModuleName)

BOOL FreeLibrary(HMODULE hModule)

int LoadString(HINSTANCE hInst, UINT uid, LPTSTR lpBuffer, int nBufferMax)

<edit> Fixed it. I was passing in by reference. pass in the string by val to the LoadString function.

  • 0

I don't understand - I use this:

 [System.Runtime.InteropServices.DllImport("kernel32")]
  private static extern int FreeLibrary(int hLibModule);
  [System.Runtime.InteropServices.DllImport("kernel32", EntryPoint="LoadLibraryA")]
  private static extern int LoadLibrary(string lpLibFileName);
  [System.Runtime.InteropServices.DllImport("user32", EntryPoint="LoadStringA")]
  private static extern int LoadString(int hInstance, int wID, string lpBuffer, int nBufferMax);
  

public string GetScreenSaverName()
{
   int scrHandle;
   string scrName = new string( '\0', 25 ); 

   scrHandle = LoadLibrary( @"c:\windows\system32\3d maze.scr" );
   LoadString( scrHandle, 1, scrName, 25 );
   FreeLibrary( scrHandle );
   return scrName.Trim();
}

And I can't see anything but a blank text :( What am I do wrong ?

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

    • No registered users viewing this page.
  • Posts

    • Samsung messages is still alive and well. They reversed that and decided to our more effort into it.
    • I think every American should have a course in a 'dry sense of humour' at school; and perhaps 'using sarcasm in jest' oh, and also 'the use or irony in humour'.
    • What they really need to do is automatically spell "loses" and "lose" correctly since nobody seems to know how to anymore. Then they blame spellcheck/autocomplete and don't realize autocomplete is just filling in the word for them automatically so it was misspelled in the first place.
    • If someone chooses to continue using SB and therefore goes through the manual intervention in the thread, afterwards the BSOD problem is gone. Whether they then re-enable the task doesn't matter, they're done, though on such machines it might pay to keep it disabled in case the next update (if there is a next) causes the same problem. OTOH, if someone disables SB in the BIOS, the problem is also gone. Incidentally, I noticed that this task exists even on machines that don't support SB. It's just installed across the board...and runs. Doing what on such machines is a little hazy.
    • qBittorrent 5.2.2 by Razvan Serea The qBittorrent project aims to provide a Free Software alternative to µtorrent. qBittorrent is an advanced and multi-platform BitTorrent client with a nice user interface as well as a Web UI for remote control and an integrated search engine. qBittorrent aims to meet the needs of most users while using as little CPU and memory as possible. qBittorrent is a truly Open Source project, and as such, anyone can and should contribute to it. qBittorrent features: Polished µTorrent-like User Interface Well-integrated and extensible Search Engine Simultaneous search in most famous BitTorrent search sites Per-category-specific search requests (e.g. Books, Music, Movies) All Bittorrent extensions DHT, Peer Exchange, Full encryption, Magnet/BitComet URIs, ... Remote control through a Web user interface Nearly identical to the regular UI, all in Ajax Advanced control over trackers, peers and torrents Torrents queueing and prioritizing Torrent content selection and prioritizing UPnP / NAT-PMP port forwarding support Available in ~25 languages (Unicode support) Torrent creation tool Advanced RSS support with download filters (inc. regex) Bandwidth scheduler IP Filtering (eMule and PeerGuardian compatible) IPv6 compliant Available on most platforms: Linux, Mac OS X, Windows, OS/2, FreeBSD qBittorrent 5.2.2 changelog: FEATURE: Use D-Bus to show file in file managers (Chocobo1) #24340 BUGFIX: Fix friendlyUnitCompact precision calculation (vafada) #24323 BUGFIX: Remove all top-level folders (glassez) #24333 BUGFIX: Use proper API for checking exit status (Chocobo1) #24349 BUGFIX: Delete stale lockfile when hostname mismatch (TurboTheTurtle, glassez) #24363 BUGFIX: Fix wrong removal procedure of watched folder paths (Chocobo1) #24413 BUGFIX: Don't reannounce before interface changes are applied (glassez) #24447 BUGFIX: Use Latin script for Bosnian locale name (Andy Ye) #24342 WEBUI: Fix performance of global checkbox toggling (tehcneko) #24316 WEBUI: Fix Safari transfer list header misalignment (Piccirello) #24377 WEBUI: Fix error when submitting magnet before metadata loads (Piccirello) #24378 WEBUI: Use correct row id when updating Rss Downloader feed selection (Chocobo1) #24402 WEBUI: Use SameSite=Lax for session cookie to fix cross-site login (Piccirello) #24422 WEBUI: Bring back properties panel expand/collapse button (vafada) #24430 WEBAPI: Only use X-Forwarded-Host header when reverse proxy support is enabled (Chocobo1) #24457 RSSS: Fix "RSS Smart Episode Filter" RegEx (nathanon-akk, glassez) #24398 RSS: Fix previously matched episode format (glassez) #24452 WINDOWS: Fix Python fallback search path (TurboTheTurtle) #24325 WINDOWS: NSIS: Allow to install x64 binary on ARM64 (Chocobo1) #24358 Download: qBittorrent 5.2.2 | 41.1 MB (Open Source) Download: qBittorrent 64-bit installer (qt6) | 43.6 MB Links: qBittorrent Home page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • Veteran
      branfont went up a rank
      Veteran
    • Reacting Well
      Almohandis earned a badge
      Reacting Well
    • First Post
      Cosminus earned a badge
      First Post
    • One Year In
      ThatGuyOnline earned a badge
      One Year In
    • Week One Done
      Jeroen Wilms earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      498
    2. 2
      +Edouard
      185
    3. 3
      PsYcHoKiLLa
      126
    4. 4
      Steven P.
      87
    5. 5
      neufuse
      72
  • Tell a friend

    Love Neowin? Tell a friend!