用程序锁电脑屏幕,怎么实现?高分 http://www.vckbase.com/document/viewdoc/?id=242http://www.vckbase.com/document/viewdoc/?id=424 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Ctrl + Alt + Del 好像用一般的方法 Hook 不到吧,微软好像对这几个键做过手脚。 对SAS窗口进行子类化,就可以截取ALT+CTRL+DEL键了。其实最好的办法还是系统办法。创建一个桌面,屏蔽掉ALT+CTRL+DEL键,显示一个对话框。开锁后切换回默认桌面。参考APICreateDesktopSwicthDesktop我以前写过。 对ALT+CTRL+DEL键用GINA就好。 我在一本书上看到他好像是用SystemParametersInfo()这个函数,但我没有在Windows XP下运行成功,这可能是因为XP安全方面考虑到这一点所以屏蔽掉了。如果是在98等条件下可以试试这个函数。SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, 1, NULL,0);EnableWindow(GetDesktopWindow(),FALSE);我是新手,初次发贴,望大虾们不要见笑。 typedef BOOL (__stdcall * _EnabledKey)(const char* sa); HINSTANCE hDLLInst = ::LoadLibrary("RunDLL.dll"); if(hDLLInst) { _EnabledKey EnabledKey=(_EnabledKey)::GetProcAddress(hDLLInst, "EnabledKey"); if(EnabledKey) { char szPath[MAX_PATH]; ::GetCurrentDirectory(MAX_PATH,szPath); strcat(szPath,"\\SASHOOK.dll"); if (EnabledKey(szPath)); MessageBox("成功屏蔽"); } ::FreeLibrary(hDLLInst); }需要RunDLL.dll和SASHOOK.dll要的话发邮件给我[email protected] 可以遇到taskmgr.exe就把它结束掉有个StopProcess9x函数设立一个定时器每隔100毫秒就StopProcess9x("taskmgr.exe"); ^_^BOOL CExample2Dlg::StopProcess9x (char* WillStopName) { HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; PROCESSENTRY32 pe32 = {0}; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return (FALSE); pe32.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hProcessSnap, &pe32)) { BOOL bGotModule = FALSE; MODULEENTRY32 me32 = {0}; do { HANDLE hProcess; hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); strupr(pe32.szExeFile); char ProcessName[100]; strcpy(ProcessName,WillStopName); strupr(ProcessName); if(strcmp(pe32.szExeFile,ProcessName)==0) { DWORD result=TerminateProcess( hProcess, 0 ); if(result!=0) return TRUE; } CloseHandle (hProcess); } while (Process32Next(hProcessSnap, &pe32)); } else bRet = FALSE; CloseHandle (hProcessSnap); return (bRet); } windows98下的是: SystemParametersInfo(SPI_SETSCREENSAVEACTIVE);NT的就不能这样了。 获取窗口指针 请教CListControl控件数据的排序问题,请了解者给于指点,谢谢!!急用!! 如何将ShellExecute的结果写入文件 请教:有没有Winsock函数可以取出本机子网掩码 请教一个在公网上传送文件的算法。 为什么不能获得asp网页的http内容?????? 如何给一个不规则物体计算它的圆形度 求助两个任意多边形的交算法 低手高分求教,TC++3.0如何安装? 数据表类指针当参数 实现简单的工作量考核的统计 程序退出时弹出个错误警告"DAMAGE: after Normal block (#90) at 0x005A6A00"
创建一个桌面,屏蔽掉ALT+CTRL+DEL键,
显示一个对话框。
开锁后切换回默认桌面。参考APICreateDesktop
SwicthDesktop我以前写过。
用GINA就好。
EnableWindow(GetDesktopWindow(),FALSE);我是新手,初次发贴,望大虾们不要见笑。
HINSTANCE hDLLInst = ::LoadLibrary("RunDLL.dll");
if(hDLLInst)
{
_EnabledKey EnabledKey=(_EnabledKey)::GetProcAddress(hDLLInst, "EnabledKey");
if(EnabledKey)
{
char szPath[MAX_PATH];
::GetCurrentDirectory(MAX_PATH,szPath);
strcat(szPath,"\\SASHOOK.dll");
if (EnabledKey(szPath));
MessageBox("成功屏蔽");
}
::FreeLibrary(hDLLInst);
}需要RunDLL.dll和SASHOOK.dll要的话发邮件给我[email protected]
有个StopProcess9x函数
设立一个定时器
每隔100毫秒就StopProcess9x("taskmgr.exe"); ^_^BOOL CExample2Dlg::StopProcess9x (char* WillStopName)
{
HANDLE hProcessSnap = NULL;
BOOL bRet = FALSE;
PROCESSENTRY32 pe32 = {0};
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
return (FALSE);
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hProcessSnap, &pe32))
{
BOOL bGotModule = FALSE;
MODULEENTRY32 me32 = {0};
do
{
HANDLE hProcess;
hProcess = OpenProcess (PROCESS_ALL_ACCESS,
FALSE, pe32.th32ProcessID);
strupr(pe32.szExeFile);
char ProcessName[100];
strcpy(ProcessName,WillStopName);
strupr(ProcessName);
if(strcmp(pe32.szExeFile,ProcessName)==0)
{
DWORD result=TerminateProcess( hProcess, 0 );
if(result!=0)
return TRUE;
}
CloseHandle (hProcess);
}
while (Process32Next(hProcessSnap, &pe32));
}
else
bRet = FALSE;
CloseHandle (hProcessSnap);
return (bRet);
}
NT的就不能这样了。