Question

Slow down my pc code needed

Asked by: ST3VO

Hi all,

I am looking for a way to slow down my pc.
Anyone have any example code of how to do this please?

Thanks

St3vo

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2008-12-01 at 05:13:54ID23946561
Tags

Delphi

Topic

Delphi Programming

Participating Experts
7
Points
500
Comments
33

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Slow PC
    I have had a problem recently after I put a Nvidia 32MB gf2 into my pc. I am a hardcore gamer, but not old enough to earn the money to buy all the latest cards etc. so this was a big step for me. After installing all the drivers, I started playing, but to my horror, my pc, no...
  2. Slow internet or slow pc ?
    How do i know if a IE is slow if it is the pc or their internet connection ? I disenfected a customers pc's, they ere loaded with trojans , spyware ..ect the pc booted up fast, connected to the internet in the blink of an eye. Now today they say it takes 5 min to get to the i...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: mikelittlewoodPosted on 2008-12-01 at 05:39:34ID: 23068210

Why would you want to slow down your pc?

 

by: ST3VOPosted on 2008-12-01 at 05:53:44ID: 23068319

To be honest. I've got dome flash games which I'd like to slow down :o)

 

by: SteveBayPosted on 2008-12-01 at 07:02:46ID: 23068987

Thats simple! Install Mcafee AntiVirus:P

 

by: ST3VOPosted on 2008-12-01 at 07:20:35ID: 23069183

hehehe :)  Norton is even worse!

I need some code though :o)

 

by: SteveBayPosted on 2008-12-01 at 07:27:38ID: 23069268

Sorry. I suppose you could write a program that hogs the CPU however you will not be able to control how and when the OS doles out the clock cycles. I would suggest looking more in the direction of Operating System tweaks rather that trying to write something.

 

by: developmentguruPosted on 2008-12-01 at 07:47:00ID: 23069532

 I think I would try installing a virtual machine.  On a virtual machine you can set how much memory it has access to, etc.  Once it is running in a virtual OS under Windows, you can find the process it is running under and lower it's priority.  This would at least give you more options to play with in the process of slowing it down.  As a side benefit, any other flash games you want to play could be run in the same environment, and anything running in the main OS would still be able to operate at near normal speeds (minus the memory, processor time, etc for the virtual machine).

Just a thought.

 

by: ThievingSixPosted on 2008-12-01 at 07:54:52ID: 23069628

Hmm, Cheat Engine(google it) has a function which allows slowing a process down. From what I know it injects a dll into the process. You can download the source to it yourself and find out but it seems to hook some timing functions such as QueryPerformanceCounter.

 

by: ST3VOPosted on 2008-12-01 at 10:34:02ID: 23071038

Hmm..I cannot find any links to the source code :o(

 

by: ST3VOPosted on 2008-12-01 at 10:36:25ID: 23071065

What about making my pc think it's low on memory, would that slow it down?

 

by: JohnjcesPosted on 2008-12-01 at 11:27:07ID: 23071546

ST3V0,

I have not tried this, but this delay code does consume a bunch of CPU time/cycles. It "could" slow things down enough for you, but it is a delay loop with Application.ProcessMessages.

You might put it in a separate executable and keep it running (change the thing to suit your needs so it runs forever until you Stop it via Stop which is a global variable and is set True.

I don't know....

John

Procedure Delay(MSecs: Cardinal);
var
 FirstTick, CurrentTick : Cardinal;
 Done : Boolean;
begin
 Done := FALSE;
 FirstTick := GetTickCount;
 While Not Done do
  begin
   Application.ProcessMessages;
   If Stop then
    Done := True;
   CurrentTick := GetTickCount;
   If Int64(CurrentTick) - Int64(FirstTick) < 0 Then
    begin
     If CurrentTick >= (Int64(FirstTick) - High(Cardinal) + MSecs) Then
      Done := TRUE;
       End
        Else
         If CurrentTick - FirstTick >= MSecs Then
          Done := TRUE;
  end;
end;

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

Select allOpen in new window

 

by: ThievingSixPosted on 2008-12-01 at 11:41:41ID: 23071720

 

by: ThievingSixPosted on 2008-12-01 at 11:43:35ID: 23071748

Look at CEHook folder specifically speedhack.pas

 

by: ST3VOPosted on 2008-12-01 at 13:23:26ID: 23072525

Hi Johnjces....Tested it and set it to 2 MSecs and I see no slowing down at all.

ThievingSex, I've checked the source and it's in delphi and C++ ... so I won't be able to compile the code I guess :o(

 

by: ThievingSixPosted on 2008-12-01 at 13:27:08ID: 23072564

The code you want is in delphi. If you just want to have an application that does something like this download the compiled cheat engine. Otherwise either extract the code from speedhack.pas and use that or recreate the concept.

 

by: JohnjcesPosted on 2008-12-01 at 13:31:14ID: 23072600

ST3V0

You need to set it for like 60 seconds to see anything appreciable. During this 60 second or longer time frame is when you need to test your game. You need a looooong loop.

2 msecs will just exit in like in 2 msecs.

John

 

by: ST3VOPosted on 2008-12-01 at 14:18:25ID: 23073021

Would it be better to call it from inside a TTimer?

 

by: JohnjcesPosted on 2008-12-01 at 14:23:32ID: 23073060

No, to test it, I'd just make a simple exe file with two buttons. One Go one Stop.

Set the delay to like 120000... should be 2 minutes. (Math is NOT my forte)!

In the go button event do Delay(120000).

The stop button should have a Stop := True. Make sure you have a var; Stop : Boolean;

Click Go run your game. See if its slower since this delay will eat CPU time.

It may not do much if anything perceivable, but could slow ya down a bit.

John

 

by: ThievingSixPosted on 2008-12-01 at 14:49:41ID: 23073239

Well, on record with the first post. I have personally used Cheat Engine itself to slow down flash games to attain a higher score.

 

by: ST3VOPosted on 2008-12-01 at 15:04:47ID: 23073338

Hi TheivingSix,

I'm not saying that it doesn't work, it's just that I want to try to have my own app to do this.

 

by: ThievingSixPosted on 2008-12-01 at 16:09:15ID: 23073684

I understand, and the source for it is readily available in delphi code.

 

by: aikimarkPosted on 2008-12-01 at 18:25:20ID: 23074127

why not set the process priority to LOW?!?

 

by: ST3VOPosted on 2008-12-02 at 00:43:30ID: 23075259

Hi Johnjces, your code takes 50% cpu but it's not enough to slow down the browser...need a bit more!

 

by: JohnjcesPosted on 2008-12-02 at 06:02:19ID: 23076846

Hmmm.... how about putting more of those delay routines in threads.

Other than that, I'm certainly out of thoughts!

John

 

by: ST3VOPosted on 2008-12-02 at 06:15:07ID: 23076943

I've actually tried loading the code twice, basically by creating another instance of the code and renaming it.
Then, calling it twice and still at 50 or 52 % max.

 

by: JohnjcesPosted on 2008-12-02 at 06:25:33ID: 23077023

ST3V0,

You come up with the good Q's!!!

I don't know. If you really want to write something in a Delphi app, the only other thing I could think of would be a combination of the above and "maybe" doing a search of the hard drive for some file or text in a file. This would waste some hard drive read/ write cycles as well as some more CPU time.

On my website I have a GUI find in file text search program. Search form some fairly long non-existent string in all files starting in your root C drive.

You may have start up the delay too.

http://www.jcitssystems.com/FileSearch.htm

So... I'm out of thoughts!

John

 

by: rllibbyPosted on 2008-12-02 at 11:41:13ID: 23080052

If your trying to slow down an application/process (vs the whole PC), then one idea might be to control the Suspend/Resume of the main thread in order to "slow" the process down. Example below, assuming you don't mind starting the process via your app ( you could also use OpenProcess to get a handle to the process).

Russell

----
function CreateSlowProcessThread(lpProcessInfo: PProcessInformation): DWORD; stdcall;
var  dwIndex:       Integer;
begin

  // Pacify the compiler
  result:=0;

  // Resource protection
  try
     // Resume thread
     ResumeThread(lpProcessInfo^.hThread);
     // While the thread is running
     while (WaitForSingleObject(lpProcessInfo^.hProcess, 0) = WAIT_TIMEOUT) do
     begin
        // Suspend / resume four times per second to smooth things out
        for dwIndex:=0 to 3 do
        begin
           // Suspend the process thread
           SuspendThread(lpProcessInfo^.hThread);
           // Delay
           Sleep(Trunc(lpProcessInfo^.dwProcessId / 4));
           // Resume the thread
           ResumeThread(lpProcessInfo^.hThread);
           // Delay
           Sleep(Trunc(lpProcessInfo^.dwThreadId / 4));
        end;
     end;
  finally
     // Close handles
     CloseHandle(lpProcessInfo^.hProcess);
     CloseHandle(lpProcessInfo^.hThread);
  end;

end;

procedure CreateSlowProcess(Command: String; SlowDownPct: Integer);
var  lpPi:          PProcessInformation;
     lpSi:          TStartupInfo;
     lpMsg:         TMsg;
     dwThread:      DWORD;
     hWait:         Array [0..0] of THandle;
begin

  // Clear startup info param
  FillChar(lpSi, SizeOf(lpSi), 0);

  // Set startup param info
  lpSi.cb:=SizeOf(lpSi);
  lpSi.dwFlags:=STARTF_USESHOWWINDOW;
  lpSi.wShowWindow:=SW_SHOWNORMAL;

  // Allocate memory for process info
  lpPi:=AllocMem(SizeOf(TProcessInformation));

  // Resource protection
  try
     // Call createprocess to run the bootstrap version of the program
     if CreateProcess(nil, PChar(Command), nil, nil, True, CREATE_SUSPENDED or IDLE_PRIORITY_CLASS, nil, nil, lpSi, lpPi^) then
     begin
        // Set thread priority
        SetThreadPriority(lpPi^.hThread, THREAD_PRIORITY_IDLE);
        // Use dword values in structure to save wait and run times
        lpPi^.dwProcessId:=Trunc(1000 * (SlowDownPct / 100));
        lpPi^.dwThreadId:=1000 - lpPi.dwProcessId;
        // Create thread to run
        hWait[0]:=CreateThread(nil, 0, @CreateSlowProcessThread, lpPi, 0, dwThread);
        // Check handle
        if (hWait[0] > 0) then
        begin
           // Resource protection
           try
              // Wait for the secondary thread to complete
              while (MsgWaitForMultipleObjects(1, hWait, False, INFINITE, QS_ALLINPUT) = (WAIT_OBJECT_0 + 1)) do
              begin
                 // Handle waiting messages
                 while PeekMessage(lpMsg, 0, 0, 0, PM_REMOVE) do
                 begin
                    // Translate and dispatch
                    TranslateMessage(lpMsg);
                    DispatchMessage(lpMsg);
                 end;
              end;
           finally
              // Close the handle
              CloseHandle(hWait[0]);
           end;
        end;
     end;
  finally
     // Free memory
     FreeMem(lpPi);
  end;

end;


---- example usage ----

  // Start a directory listing throttled down by 75%
  CreateSlowProcess('cmd /k  dir c:\ /s', 75);

 

by: ST3VOPosted on 2008-12-02 at 12:40:13ID: 23080573

Intresting but everything is still going fast :o(

 

by: aikimarkPosted on 2008-12-02 at 12:50:04ID: 23080656

What about my low priority idea?

 

by: ThievingSixPosted on 2008-12-02 at 13:14:17ID: 23080871

The only solution that will offer a precise way to slow down a process would be to inject a dll that hooks QueryPerformanceCounter(), timeGetTime(), and GetTickCount(). A flash game uses these function exclusively when timing it's frames per second. Plus, the source is readily available.

 

by: ST3VOPosted on 2008-12-02 at 14:02:34ID: 23081350

aikimark, about your idea, do you mean via a TTimer?

ThievingSix: ref: Plus, the source is readily available....where?

thanks again!

 

by: ThievingSixPosted on 2008-12-02 at 15:28:37ID: 23081959

As I said before the entire cheat engine program is open source. You can get it from www.cheatengine.org or here is the direct link: http://www.cheatengine.org/downloads/CheatEngine54src.rar

The file that does what you want is in this folder: "\ce54releasesvn\CEHook". It contains the source dll that the main cheatengine.dpr uses to do many things including speed hacking a process. That is contained in "\ce54releasesvn\CEHook\speedhack.pas".

 

by: aikimarkPosted on 2008-12-02 at 15:34:26ID: 23082000

@ST3VO

Do it by hand first -- Task Manager; right mouse click; Set Priority

If that works, you can set your priority programmatically.  If running with admin privileges, you can set any process's priority.  Otherwise, you can set your own process priority and anything your process spawns.

 

by: ST3VOPosted on 2009-01-14 at 06:44:13ID: 31521478

Thanks!!!

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...