Solved

Lock the workstation on a windows machine

Posted on 2004-10-20
8
440 Views
Last Modified: 2007-12-19
hi,

i'm trying to come by some code to help me lock the workstation from the program i'm developing for windows machines (2000 and xp)

i know there is an API, but i think i don't have it, for example i tried this:
#include <windows.h>
#include <stdio.h>
int main()
{
                        if(!LockWorkStation())
                                  printf ("error: could not lock workstation:  %d\n", GetLastError());
                        return 0;
}

according to msdn LockWorkStation() is included on windows.h, but not VC 5, nor GCC (mingw or cygwin) can find it.

another thing i tried is to find something similar to this:

SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0);

that will lock the workstation by activating the screensaver. everything is fine, only i just want to lock the computer without the screensaver. so maybe there is a parameter other than SC_SCREENSAVE that i can pass onto SendMessage.

the last thing i know of is the rundll trick of locking the Workstation by calling user32.dll or something, but again, there must be a better way

any ideas?

any help will be appreciated.
0
Comment
Question by:urif
  • 3
8 Comments
 

Expert Comment

by:Mic77
ID: 12356328
To make the work, you need a newer SDK which contains the header and lib-files.
You need install VC7 or try this one

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
0
 

Author Comment

by:urif
ID: 12356381
hmmm, thanks but i dont think that installing a 266mb sdk for one function is a solution. at least not at this point.

thanks so much anyway

any other ideas?
0
 
LVL 86

Accepted Solution

by:
jkr earned 100 total points
ID: 12358597
>>any other ideas?

Load the entrypoint dynamically:

typedef BOOL (*FPTR_LockWorkStation)(VOID);

HINSTANCE hDll = LoadLibrary( "user32.dll");

FPTR_LockWorkStation pLockWorkStation = (FPTR_LockWorkStation) GetProcAddress (hDll,"LockWorkStation");

_LockWorkStation();

FreeLibrary (hDll);
0
 

Author Comment

by:urif
ID: 12399102
it still returns as undeclared identifier: _LockWorkStation();
0
 

Author Comment

by:urif
ID: 12419532
ok for anyone that searched the solution:

#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <winuser.h>

so you only have to add winuser.h


cheers!
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.
The goal of this video is to provide viewers with basic examples to understand opening and reading files in the C programming language.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now