 |
两种关机代码的比较
|
|
| |
| InitiateSystemShutdown(NULL,"关机",10,TRUE,FALSE) //这个函数不能直接掐断电源,但是可以cancel掉关机指令
ExitWindowsEx(EWX_POWEROFF | EWX_FORCE ,0) //直接强制关机,掐断电源
|
|
| 作者:不祥 xler张贴于2004-05-11 18:03:37.0,共阅读1587次,回复0次 |
|
|
 |
系统关机代码
|
|
| |
| BOOL ShutDown()
{
OSVERSIONINFO osVI;
HANDLE hToken=NULL;
osVI.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
if(GetVersionEx(&osVI))
{
switch(osVI.dwPlatformId)
{
case VER_PLATFORM_WIN32s:
case VER_PLATFORM_WIN32_WINDOWS:
ExitWindowsEx(EWX_POWEROFF,0);
break;
case VER_PLATFORM_WIN32_NT:
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES, &hToken))
{
SetPrivilege(hToken,SE_SHUTDOWN_NAME,TRUE);
if(!ExitWindowsEx(EWX_ ...
|
|
| 作者:不祥 xler张贴于2004-05-11 18:01:29.0,共阅读1888次,回复0次 |
|
|
 |
系统重起代码
|
|
| |
| HINSTANCE hShell32 = ::LoadLibrary("shell32.dll");
if(hShell32)
{
typedef int (WINAPI *RestartDialog)(HWND hwndOwner,LPCSTR lpstrReason,UINT uFlags);
RestartDialog SHRestartWindowsDialog =(RestartDialog)GetProcAddress(hShell32, MAKEINTRESOURCE(59));
if(SHRestartWindowsDialog)
{
(SHRestartWindowsDialog)(GetDesktopWindow(),NULL,EWX_REBOOT);
}
}
|
|
| 作者:不祥 xler张贴于2004-05-11 17:47:30.0,共阅读1792次,回复0次 |
|
|
 |
win2000锁定屏幕调用代码
|
|
| |
| 对于其他os,不知道有没有用WinExec("rundll32.exe user32.dll,LockWorkStation",SW_HIDE);
|
|
| 作者:不祥 xler张贴于2004-05-11 17:37:05.0,共阅读1786次,回复0次 |
|
|
 |
GetLastError()对应的原因
|
|
| |
| void DisplayError(DWORD dwError)
{
LPVOID pv;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
(LPTSTR)&pv,
0,
NULL);
MessageBox(NULL, (LPTSTR)pv, "Error", MB_ICONHAND);
LocalFree(pv);
}
这样用:
DisplayError(WSAGetLastError());
可以看到错误的原因!
|
|
| 作者:不祥 jerry张贴于2004-04-24 22:31:46.0,共阅读1912次,回复0次 |
|
|
 |
使用QueryPerformanceCount的小例子
|
|
| |
| LARGE_INTEGER liCount1;
LARGE_INTEGER liCount2;
LARGE_INTEGER liFrequency;
double fSeconds;
//你的其他代码...
//时间点1(例如按某个button的时间)
QueryPerformanceCounter(&liCount1);
//你的其他代码...
//时间点2(例如某事件完成的时间)
QueryPerformanceCounter(&liCount2);
QueryPerformanceFrequency(&liFrequency);//每秒记数
fSeconds=(double)(liCount2.QuadPart -liCount1.QuadPart )/(double)liFrequency.QuadPart; //时间点2和时间点1之间的精确秒数
|
|
| 作者:不祥 ycr40张贴于2004-04-20 17:21:50.0,共阅读1888次,回复1次 |
|
|
 |
异步读写的简单串口类
|
|
| |
| // Serial.h
#ifndef __SERIAL_H__
#define __SERIAL_H__
#define FC_DTRDSR 0x01
#define FC_RTSCTS 0x02
#define FC_XONXOFF 0x04
#define ASCII_BEL 0x07
#define ASCII_BS 0x08
#define ASCII_LF 0x0A
#define ASCII_CR 0x0D
#define ASCII_XON 0x11
#define ASCII_XOFF 0x13
class CSerial
{
public:
CSerial();
~CSerial();
BOOL Open( int nPort = 2, int nBaud = 9600 );
BOOL Close( void );
int ReadData( void *, int );
int SendData( const char *, int );
int ReadDataWaiting( void );
BOOL IsOpened( void ){ return( m_b ...
|
|
| 作者:不祥 bruticus张贴于2004-04-19 12:51:38.0,共阅读2351次,回复1次 |
|
|
 |
获取系统可用串口列表
|
|
| |
| int CUtil::GetSystemPorts(CString *pNameList, CString *pPortList)
{
CRegKey RegKey;
int nCount = 0;
if(RegKey.Open(HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm") == ERROR_SUCCESS)
{
while(true)
{
char ValueName[_MAX_PATH];
unsigned char ValueData[_MAX_PATH];
DWORD nValueSize = _MAX_PATH;
DWORD nDataSize = _MAX_PATH;
DWORD nType;
if(::RegEnumValue(HKEY(RegKey), nCount, ValueName, &nValueSize, NULL, &nType, ValueData, &nDataSize) == ERROR_NO_MORE_ITEMS)
{
break;
}
if(pNameList)
pNameList[nCount] = ValueName;
...
|
|
| 作者:不祥 bluejoe张贴于2004-03-10 14:59:41.0,共阅读2187次,回复0次 |
|
|
|