VC++启动进程并隐藏窗口

VC++启动进程并隐藏窗口

HDESK hDesk = CreateDesktop(_T("MyDesk"), NULL, NULL, 0, GENERIC_ALL, NULL);
_ASSERT(hDesk);
STARTUPINFO si = {sizeof(si)};
si.lpDesktop = _T("MyDesk");
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
PROCESS_INFORMATION pi = {0};

if(CreateProcess(NULL, pCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
	HANDLE hProcess=pi.hProcess;
	CloseHandle(pi.hThread);
	if (WaitForSingleObject(hProcess,INFINITE)!=WAIT_FAILED)
	{
		DWORD dwExitCode;
		GetExitCodeProcess(hProcess,&dwExitCode);
		if (dwExitCode==STILL_ACTIVE)
			MessageBox(NULL, "thread still alive !", "debug", MB_OK);
	}
	CloseHandle(pi.hProcess);
	CloseDesktop(hDesk);
}

li里的文章列表左右分浮动

li里的文章列表左右分浮动

一般思路(错误做法)

<div>
	<ul>
		<li><a href="#" mce_href="#">文章标题</a>发表日期</li>
	</ul>
</div>

正确做法

<div>
	<ul>
		<li>发表日期<a href="#" mce_href="#">文章标题</a></li>
	</ul>
</div>

然后利用CSS,设置“文章标题”左浮动,“发表日期”右浮动,当然实现方式有多种,样式可以定义在div里,也可以定义在ul,也可以定义在li里,亦可以在li里添加div或者span均可。正常人的思路都是:左对齐的就放在左边啦,右对刘的放右边啦!如上面代码一样

问题出现: 在firefox等严格按照CSS反映出效果;但在IE里,这li里面的内容就不在同一行了,“发表日期”会跳到下一行里。

解决方法: 将”发表日期”放在”文章标题”前面,这样浮动就不受影响了。

MFC中ToString()、Convert.ToString()、(string)、as string 的区别

通常 object 到 string 有四种方式(假设有object obj):obj.ToString()、Convert.ToString()、(string)obj、obj as string。他们都能将 object 对象转换成 string 对象。我就讲讲他们的异同以及在实际中应该使用哪个。

前两个方法通常是由别的对象得到 string 对象,它们间的区别只表现在要转换的对象为 null 时,如果 obj 为 null,调用 obj.ToString 方法会导致 NullReferenceException 异常,调用 Convert.ToString 不会抛出异常而返回一个 null。

用强制转换(string)obj 要求 obj 的运行时类型必须是 string。如果不是,就会抛出异常。

用 as 方法则会相对平稳,当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。

所以在通常在我们需要得到某个对象的 string 表达形式时,我们应该使用 ToString 和 Convert.ToString,这时候你就得根据情形选一个,假如你能保证你的对象不为 null,则两个差不多。如果有可能为null,你就应该用 Convert.ToString,如果你希望它为 null 的时候抛出异常,那么当然可以选择 ToString。

编者注:

这里是说 object 到 string,如果在其它类型上调用第一种 ToString(),得到的不一定是实际的内容,可能是对该类的描述,这取决于该类如何实现ToString() 方法

C#判断中文、日文、韩文

C#判断中文、日文、韩文的办法:

中文:/[\u4e00-\u9fa5]/

日文:/[\u0800-\u4e00]/

韩文:/[\uac00-\ud7ff]/

C# 正则表达式应用实例  如果要匹配 所有东亚语言 @"[\u4E00-\u9fa5]"

// 判断韩语
if  (System.Text.RegularExpressions.Regex.IsMatch(content, @"^[\uac00-\ud7ff]+$"))
{
}
 
// 判断日语
if (System.Text.RegularExpressions.Regex.IsMatch(content, @"^[\u0800-\u4e00]+$"))
{
}
 
// 判断中文
if (System.Text.RegularExpressions.Regex.IsMatch(content, @"^[\u4e00-\u9fa5]+$")) // 如果是中文
{
}