本文目录一览:
- 1、windows10命令提示符的MSG命令的获取会话名称时的错误5、错误1722分别是什么意思?
- 2、windows无法停用Generic-MS/MS-Pro USB Device设备,原因是某个程序正在使用它。但我什么也没插?
- 3、由于 Windows 无法加载这个设备所需的驱动程序,导致这个设备工作异常。 (代码 31)这个怎么解决?
- 4、Qt怎样处理Windows消息
- 5、Qt的窗口消息处理函数是哪个
- 6、高手进阶:给WINDOWS服务加上描述
windows10命令提示符的MSG命令的获取会话名称时的错误5、错误1722分别是什么意思?
windows10命令提示符的MSG命令的获取会话名称时的错误5、错误1722是设置错误造成的,解决方法为:
1、对于磁盘中的剩余的可用空间,可使用diskpart命令将其创建为分区。
2、在命令提示符窗口输入命令“create partition logical”。
3、按【Enter】键即可成功的将磁盘中的剩余的可用空间创建为分区。
4、使用“list volum”命令查看磁盘中的卷,即可看到新创建的卷4没有驱动器号。
5、在命令提示符窗口输入命令“select volume 4”,按【Enter】键选择卷并给予其焦点。
6、在命令提示符窗口输入命令“assign letter=F”,按【Enter】键即可成功将驱动号F分配给卷4。
windows无法停用Generic-MS/MS-Pro USB Device设备,原因是某个程序正在使用它。但我什么也没插?
如题。也就是说真的有程序在使用USB设备的文件。所以,办法就是找到访问的程序,然后关闭它,或关闭它所打开的文件。如果是您打开了USB设备的文件,则很容易知道和处理,以下常见的打开的文件但又不易发现的情况,请参考: -windowsgenericmsg
1.音乐视频播放器打开了
2.杀毒软件对访问的文件进行查杀
3.杀毒软件定时扫描
4.其他网络上的入侵或本机木马程序在访问
5.USB设备上本身有活动病毒文件正在被自动运行
6.在文件浏览器浏览USB设备文件
由于 Windows 无法加载这个设备所需的驱动程序,导致这个设备工作异常。 (代码 31)这个怎么解决?
这是因为接口没有安装驱动。
1、首先需要在”控制面板“列表里,找到并点击名称为”设备管理器“按钮选项:
2、接着需要在接下来页面框中点击”网络适配器“,在其列表右击选择”更新驱动程序“按钮:
3、最后只需要在接下来弹出的页面框中点击”自动搜索更新的驱动程序软件“按钮选项即可解决问题:
Qt怎样处理Windows消息
Qt处理Windows消息的方法
一、用到的头文件和函数
首先,要想在Qt工程中处理Windows消息,你必须包含对应的Windows头文件windows.h。如果还需要用到一些扩展的组件,则还要包含windowsx.h。
此外,你需要实现继承自QWidget类的虚函数nativeEvent。这个函数名也很好记,即本地事件。注意,这是一个保护类型成员。
该函数的声明为
virtual bool
nativeEvent(const QByteArray eventType, void *message, long *result);
注意,在Windows平台上,事件类型标识为 "windows_generic_MSG",消息类型为MSG*,返回值类型为LRESULT。
二、示例
首先,我们在类中声明nativeEvent函数。
接着,我们对参数类型进行转换。
然后,就可以像往常一样通过switch来处理Windows消息了。
在此需要提醒大家注意的是,如果我们处理完相应的消息后,不再想让Qt执行默认的事件处理,就返回true,表示消息已处理;否则,就返回false,执行完指定的操作后再执行默认处理。
Qt的窗口消息处理函数是哪个
重写窗体的nativeEvent事件,就可以了。
示例代码:
函数声明:
protected:
bool nativeEvent(const QByteArray eventType, void *message, long *result);
函数定义:
bool GWSMainWindow::nativeEvent(const QByteArray eventType, void *message, long *result)
{
if (eventType == "windows_generic_MSG")
{
MSG* msg = reinterpret_castMSG*(message);
switch (msg-message)
{
case WM_COPYDATA:
{
COPYDATASTRUCT *copyData = (COPYDATASTRUCT*)msg-lParam;
int nDataSize = copyData-cbData;
if(nDataSize 0)
{
char* ch = new char[nDataSize];
memcpy(ch, copyData-lpData, nDataSize);
QString strMsg = QString::fromUtf8(ch);
delete [] ch;
m_msgList.append(strMsg);
int nIndex = m_msgList.count() - 1;
PostMessage((HWND)this-winId(), MYWM_HANDLECOPYDATA, copyData-dwData, nIndex);
}
return true;
}
case MYWM_HANDLECOPYDATA://自定义消息
{
return handleCopyDataMsg(msg-lParam, msg-wParam);
}
case MYWM_UPDATESOFTMGRICON:
{
int nCount = (int)msg-lParam;
m_pSysTitleWidget-updateSoftMgrIcon(nCount);
return true;
}
default:
return QWidget::nativeEvent(eventType, message, result);
}
}
else
return QWidget::nativeEvent(eventType, message, result);
}
高手进阶:给WINDOWS服务加上描述
; 当我们创建一个WINDOWS服务后 却发觉我们所创建的服务没有相关的描述 (你可以打开服务管理器程序查看) 而System ServiceProcess ServiceBase这些相关的类都没有提供这方面的信息 同样如果我们需要给我们的服务加上恰当的描述 我们也只能通过非托管代码来处理 -windowsgenericmsg
using System;using System Runtime InteropServices;
namespace FileWatchService{ public class modAPI { [DllImport( advapi dll )] public static extern int LockServiceDatabase(int hSCManager); [DllImport( advapi dll )] public static extern bool UnlockServiceDatabase(int hSCManager); [DllImport( kernel dll )] public static extern void CopyMemory(IntPtr pDst SC_ACTION[] pSrc int ByteLen); [DllImport( advapi dll )] public static extern bool ChangeServiceConfigA( int hService ServiceType dwServiceType int dwStartType int dwErrorControl string lpBinaryPathName string lpLoadOrderGroup int lpdwTagId string lpDependencies string lpServiceStartName string lpPassword string lpDisplayName); [DllImport( advapi dll )] public static extern bool ChangeServiceConfig A( int hService InfoLevel dwInfoLevel [MarshalAs(UnmanagedType Struct)] ref SERVICE_DESCRIPTION lpInfo);-windowsgenericmsg
[DllImport( advapi dll )] public static extern bool ChangeServiceConfig A( int hService InfoLevel dwInfoLevel [MarshalAs(UnmanagedType Struct)] ref SERVICE_FAILURE_ACTIONS lpInfo);-windowsgenericmsg
[DllImport( advapi dll )] public static extern int OpenServiceA( int hSCManager string lpServiceName ACCESS_TYPE dwDesiredAccess);-windowsgenericmsg
[DllImport( advapi dll )] public static extern int OpenSCManagerA( string lpMachineName string lpDatabaseName ServiceControlManagerType dwDesiredAccess);-windowsgenericmsg
[DllImport( advapi dll )] public static extern bool CloseServiceHandle( int hSCObject);
[DllImport( advapi dll )] public static extern bool QueryServiceConfigA( int hService [MarshalAs(UnmanagedType Struct)] ref QUERY_SERVICE_CONFIG lpServiceConfig int cbBufSize int pcbBytesNeeded); [DllImport( advapi dll )] public static extern int StartService(int SVHANDLE int dwNumServiceArgs string lpServiceArgVectors);-windowsgenericmsg
public const int STANDARD_RIGHTS_REQUIRED = xF ; public const int GENERIC_READ = ; public const int ERROR_INSUFFICIENT_BUFFER = ; public const int SERVICE_NO_CHANGE = ; //public const int SERVICE_NO_CHANGE = xFFFF;-windowsgenericmsg
public enum ServiceType { SERVICE_KERNEL_DRIVER = x SERVICE_FILE_SYSTEM_DRIVER = x SERVICE_WIN _OWN_PROCESS = x SERVICE_WIN _SHARE_PROCESS = x SERVICE_INTERACTIVE_PROCESS = x SERVICETYPE_NO_CHANGE = SERVICE_NO_CHANGE }-windowsgenericmsg
public enum ServiceStartType:int { SERVICE_BOOT_START = x SERVICE_SYSTEM_START = x SERVICE_AUTO_START = x SERVICE_DEMAND_START = x SERVICE_DISABLED = x SERVICESTARTTYPE_NO_CHANGE = SERVICE_NO_CHANGE }-windowsgenericmsg
public enum ServiceErrorControl:int { SERVICE_ERROR_IGNORE = x SERVICE_ERROR_NORMAL = x SERVICE_ERROR_SEVERE = x SERVICE_ERROR_CRITICAL = x msidbServiceInstallErrorControlVital = x SERVICEERRORCONTROL_NO_CHANGE = SERVICE_NO_CHANGE }-windowsgenericmsg
public enum ServiceStateRequest:int { SERVICE_ACTIVE = x SERVICE_INACTIVE = x SERVICE_STATE_ALL = (SERVICE_ACTIVE + SERVICE_INACTIVE) }-windowsgenericmsg
public enum ServiceControlType:int { SERVICE_CONTROL_STOP = x SERVICE_CONTROL_PAUSE = x SERVICE_CONTROL_CONTINUE = x SERVICE_CONTROL_INTERROGATE = x SERVICE_CONTROL_SHUTDOWN = x SERVICE_CONTROL_PARAMCHANGE = x SERVICE_CONTROL_NETBINDADD = x SERVICE_CONTROL_NETBINDREMOVE = x SERVICE_CONTROL_NETBINDENABLE = x SERVICE_CONTROL_NETBINDDISABLE = xA SERVICE_CONTROL_DEVICEEVENT = xB SERVICE_CONTROL_HARDWAREPROFILECHANGE = xC SERVICE_CONTROL_POWEREVENT = xD SERVICE_CONTROL_SESSIONCHANGE = xE }-windowsgenericmsg
public enum ServiceState:int { SERVICE_STOPPED = x SERVICE_START_PENDING = x SERVICE_STOP_PENDING = x SERVICE_RUNNING = x SERVICE_CONTINUE_PENDING = x SERVICE_PAUSE_PENDING = x SERVICE_PAUSED = x }-windowsgenericmsg
public enum ServiceControlAccepted:int { SERVICE_ACCEPT_STOP = x SERVICE_ACCEPT_PAUSE_CONTINUE = x SERVICE_ACCEPT_SHUTDOWN = x SERVICE_ACCEPT_PARAMCHANGE = x SERVICE_ACCEPT_NETBINDCHANGE = x SERVICE_ACCEPT_HARDWAREPROFILECHANGE = x SERVICE_ACCEPT_POWEREVENT = x SERVICE_ACCEPT_SESSIONCHANGE = x }-windowsgenericmsg
public enum ServiceControlManagerType:int { SC_MANAGER_CONNECT = x SC_MANAGER_CREATE_SERVICE = x SC_MANAGER_ENUMERATE_SERVICE = x SC_MANAGER_LOCK = x SC_MANAGER_QUERY_LOCK_STATUS = x SC_MANAGER_MODIFY_BOOT_CONFIG = x SC_MANAGER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED + SC_MANAGER_CONNECT + SC_MANAGER_CREATE_SERVICE + SC_MANAGER_ENUMERATE_SERVICE + SC_MANAGER_LOCK + SC_MANAGER_QUERY_LOCK_STATUS + SC_MANAGER_MODIFY_BOOT_CONFIG }-windowsgenericmsg
public enum ACCESS_TYPE:int { SERVICE_QUERY_CONFIG = x SERVICE_CHANGE_CONFIG = x SERVICE_QUERY_STATUS = x SERVICE_ENUMERATE_DEPENDENTS = x SERVICE_START = x SERVICE_STOP = x SERVICE_PAUSE_CONTINUE = x SERVICE_INTERROGATE = x SERVICE_USER_DEFINED_CONTROL = x SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED + SERVICE_QUERY_CONFIG + SERVICE_CHANGE_CONFIG + SERVICE_QUERY_STATUS + SERVICE_ENUMERATE_DEPENDENTS + SERVICE_START + SERVICE_STOP + SERVICE_PAUSE_CONTINUE + SERVICE_INTERROGATE + SERVICE_USER_DEFINED_CONTROL }-windowsgenericmsg
[StructLayout(LayoutKind Sequential)] public struct SERVICE_STATUS { public int dwServiceType; public int dwCurrentState; public int dwControlsAccepted; public int dwWin ExitCode; public int dwServiceSpecificExitCode; public int dwCheckPoint; public int dwWaitHint; } [StructLayout(LayoutKind Sequential)] public struct QUERY_SERVICE_CONFIG { public int dwServiceType; public int dwStartType; public int dwErrorControl; public string lpBinaryPathName; public string lpLoadOrderGroup; public int dwTagId; public string lpDependencies; public string lpServiceStartName; public string lpDisplayName; }-windowsgenericmsg
public enum SC_ACTION_TYPE:int { SC_ACTION_NONE = SC_ACTION_RESTART = SC_ACTION_REBOOT = SC_ACTION_RUN_MAND = }-windowsgenericmsg
[StructLayout(LayoutKind Sequential)] public struct SC_ACTION { public SC_ACTION_TYPE SCActionType; public int Delay; }-windowsgenericmsg
public enum InfoLevel:int { SERVICE_CONFIG_DESCRIPTION = SERVICE_CONFIG_FAILURE_ACTIONS = }-windowsgenericmsg
[StructLayout(LayoutKind Sequential)] public struct SERVICE_DESCRIPTION { public string lpDescription; }-windowsgenericmsg
[StructLayout(LayoutKind Sequential)] public struct SERVICE_FAILURE_ACTIONS { public int dwResetPeriod; public string lpRebootMsg; public string lpCommand; public int cActions; public int lpsaActions; } }}-windowsgenericmsg
当我们给服务增加安装包时 我们可以在ProjectInstaller里加上我们修改服务描述的代码
private void InitializeComponent() {
//这里要增加代码this AfterInstall += new System Configuration Install InstallEventHandler(this ProjectInstaller_AfterInstall);-windowsgenericmsg
}
private void ProjectInstaller_AfterInstall(object sender System Configuration Install InstallEventArgs e) {-windowsgenericmsg
int iSCManagerHandle = ; int iSCManagerLockHandle = ; int iServiceHandle = ; bool bChangeServiceConfig = false; bool bChangeServiceConfig = false; modAPI SERVICE_DESCRIPTION ServiceDescription; modAPI SERVICE_FAILURE_ACTIONS ServiceFailureActions; modAPI SC_ACTION[] ScActions = new modAPI SC_ACTION[ ];-windowsgenericmsg
bool bCloseService = false; bool bUnlockSCManager = false; bool bCloseSCManager = false;
IntPtr iScActionsPointer = new IntPtr();
try { //打开服务控制台 iSCManagerHandle = modAPI OpenSCManagerA(null null modAPI ServiceControlManagerType SC_MANAGER_ALL_ACCESS);-windowsgenericmsg
if (iSCManagerHandle ) { throw new Exception( 不能打开服务管理器 ); }
iSCManagerLockHandle = modAPI LockServiceDatabase(iSCManagerHandle);
if (iSCManagerLockHandle ) { throw new Exception( 不能锁定服务管理器 ); }
//服务名 iServiceHandle = modAPI OpenServiceA(iSCManagerHandle JadeWatchService modAPI ACCESS_TYPE SERVICE_ALL_ACCESS);-windowsgenericmsg
if (iServiceHandle ) { throw new Exception( 不能打开服务进行修改 ); } bChangeServiceConfig = modAPI ChangeServiceConfigA(iServiceHandle modAPI ServiceType SERVICE_WIN _OWN_PROCESS | modAPI ServiceType SERVICE_INTERACTIVE_PROCESS modAPI SERVICE_NO_CHANGE modAPI SERVICE_NO_CHANGE null null null null null null);-windowsgenericmsg
if (bChangeServiceConfig==false) { throw new Exception( 不能改变服务设置 ); }
ServiceDescription lpDescription = 青鸟文件监控服务 如果停止该服务 数据将不能正常进行备份! ;
bChangeServiceConfig = modAPI ChangeServiceConfig A(iServiceHandle modAPI InfoLevel SERVICE_CONFIG_DESCRIPTION ref ServiceDescription);-windowsgenericmsg
if (bChangeServiceConfig ==false) { throw new Exception( 不能进行服务描述更改 ); }
ServiceFailureActions dwResetPeriod = ; ServiceFailureActions lpRebootMsg = 服务启动失败! 重启中 ; // ServiceFailureActions lpCommand = SomeCommand exe Param Param ; ServiceFailureActions lpCommand = ; ServiceFailureActions cActions = ScActions Length;-windowsgenericmsg
//故障恢复设置 这里没有设置 ScActions[ ] Delay = ; ScActions[ ] SCActionType = modAPI SC_ACTION_TYPE SC_ACTION_NONE; //不要对失败操作做任何处理 如果重启服务等 ScActions[ ] Delay = ; ScActions[ ] SCActionType = modAPI SC_ACTION_TYPE SC_ACTION_NONE; ScActions[ ] Delay = ; ScActions[ ] SCActionType = modAPI SC_ACTION_TYPE SC_ACTION_NONE;-windowsgenericmsg
iScActionsPointer = Marshal AllocHGlobal(Marshal SizeOf(new modAPI SC_ACTION()) * );
modAPI CopyMemory(iScActionsPointer ScActions Marshal SizeOf(new modAPI SC_ACTION()) * );
ServiceFailureActions lpsaActions = iScActionsPointer ToInt ();
bChangeServiceConfig = modAPI ChangeServiceConfig A(iServiceHandle modAPI InfoLevel SERVICE_CONFIG_FAILURE_ACTIONS ref ServiceFailureActions);-windowsgenericmsg
if (bChangeServiceConfig ==false) { throw new Exception( 不能设置服务的故障恢复设置 ); } } catch(Exception ex) { throw new Exception(ex Message); } finally { Marshal FreeHGlobal(iScActionsPointer);-windowsgenericmsg
if (iServiceHandle ) { bCloseService = modAPI CloseServiceHandle(iServiceHandle); }
if (iSCManagerLockHandle ) { bUnlockSCManager = modAPI UnlockServiceDatabase(iSCManagerLockHandle); }-windowsgenericmsg
if (iSCManagerHandle != ) { bCloseSCManager = modAPI CloseServiceHandle(iSCManagerHandle); } } }-windowsgenericmsg
在安装完成后 我们对服务进行 这里可以修改的内容包括服务的描述 服务的故障处理等
如果你在安装时 需要对服务进行自动处于运行状态 或卸载时需要自动将服务也卸载 你只要注册
this beforeuninstall+=new InstallEventHandler(ProjectInstaller_BeforeUninstall); this Committed+=new InstallEventHandler(ProjectInstaller_Committed);-windowsgenericmsg
这二个事件
mitted事件 在这里可以将安装的服务进行调整到运行状态
lishixinzhi/Article/program/net/201311/13252