Solved

Lock the workstation on a windows machine

Posted on 2004-10-20
8
470 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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Trouble linking program with -lcrypt 3 160
C language IDE – Compilers installation 14 78
Super Scope, DHCP 5 96
Windows Server 2012 R2 - connect to computer 13 69
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…
The goal of this video is to provide viewers with basic examples to understand how to use strings and some functions related to them in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.

726 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