2013年2月

安裝程式使用函數 WaitOnDialog 在 Script 中偵測到一個可能的死循環。確保使用正確的方法來處理錯誤返回代碼。 錯誤 440。

installscript的如下代码:

nResult = EzDefineDialog ( "SdFinish21" , ISUSER , "" , 22032 );

造成如下错误:


安裝程式使用函數 WaitOnDialog 在 Script 中偵測到一個可能的死循環。確保使用正確的方法來處理錯誤返回代碼。 錯誤 440。

 EzDefineDialog是用来定义一个自定义对话框。原型:

EzDefineDialog ( szDialogName, szDLLName, szDialogID, nDialogID ); 

其中szDialogID指定对话框名字。nDialogID指定ID。如果szDialogID为空(""),就根据ID来查找。

但是我重新生成了InstallShield里面的Dialog。造成生成的nDialogID和以前代码的ID(22032)不一致。导致找不到对话框资源。解决办法是把ID修改为生成的Dialog所对应的nDialogID。

小技巧:nDialogID可以通过Direct Editor -> Dialog 里面的ISResourceId字段获取。

CryptAcquireContext返回NTE_EXISTS(0x8009000F)

CryptAcquireContext(&hProv, _T("test"), NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET);

最后一个参数为0表示获取某个key container的CSP(Crypto Service Provider),为CRYPT_NEWKEYSET时表示新建一个key container。以上语句两次运行,在第二次运行的时候_T("test")这个key container已经存在所以报错:NTE_EXISTS(0x8009000F)。应该加以判断:

bRet = CryptAcquireContext(&hProv, _T("test"), NULL, PROV_RSA_FULL, 0);
if (!bRet)
{
    if (dwRet=GetLastError() == NTE_EXISTS)
    {

        bRet = CryptAcquireContext(&hProv, _T("test"), NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET);
        if (!bRet)
        {
            dwRet = GetLastError();

        }
    }
}

wordpress删除指定term_id的所有文章

delete a,b,c,d
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE e.term_id =733

wp_terms.term_id 表示一个term的id。这个term可以是post tag、post category、nav menu、post-format等类型。

管理员身份运行cmd的快捷键

以前在开始菜单里面搜索“cmd”,然后再右击“cmd”,点“以管理员身份运行”。
现在的方法:开始菜单搜索“cmd”,Ctrl+Shift+Enter,搞定。这样就不用让你的手离开键盘了,提高了一点点工作效率。