以前注册的时候随机生成了一个丑陋的名字,没在意,想改的时候麻烦得一腿。

我也不知道是不是从1.2版本才可以更改的。

 

设置-账号信息-微信号 点击进入就可以更改了,不过会提示只能修改一次,珍惜机会哦。

 

重启即可。

 

这两天写自动化工具,需要操作其他软件窗口,遇到了比较头疼的tab control问题。

其实两句话就可以搞定,但是我思考了很久很久。。。

SendMessage(hTab,TCM_SETCURFOCUS,1,0);//这句话是相当重要的,不然的话tab子窗口不会跟随切换。就这一句话,搞了很久。
SendMessage(hTab,TCM_SETCURSEL,1,0);//第三个参数为想切换的的tab索引项

也可以直接使用api:

TabCtrl_SetCurFocus(hTab,1);
TabCtrl_SetCurSel(hTab,1);

 

现在的东西,没啥技术可以突破了,也不是我希望的方向。薪水,嫌低。走,果断不留。。。

 

还是没心情还整理,各种破事太多。
wordpress也还在熟悉之中。

 

虽然换了一个超大美国空间。家里用网通,80%时间都不能访问。

 

不可否认,饥饿营销助长了苹果的成功。
不可否认,小米算得上是一款高端好手机,非常具有性价比。

我们可以这样理解 这个“库存”,如果是 已经生产完毕,那么无疑 那30万台发货期间,完成的库存。

如果是将要库存,那么按现在每天至少15000台,来算。18号到31号,按现在发货量来计算,每天的产能应该在15000台之上。也远远超过10万台。

无论是哪种猜测,饥饿营销无疑。

其实,大家都没错,无可非议。

 

这两天终于有些方便转到wordpress,还有许多地方需要完善。
我是在本地转换后上传到服务器,当时为了方便将转换程序网址设成了本地http://localhost/wordpress
,所以文章中附件的路径出现了问题。
可以通过如下代码修改数据库:
Update wp_posts Set post_content=Replace(post_content,"http://localhost/wordpress","http://www.noevil.me")
直接在phpmyadmin中运行即可。

 

由于域名在本朝注册,必须备案,备案3次了,搞烦了,还要身份证,半身照,操tmd,打算换个域名,国外注册。。。

关于空间,近来空间不大稳定,打算换一个国外的。。。

又要一番折腾。。。

 

一直比较喜欢本地数据库,对于少量数据来说很方便维护,而Sqlite确实是一个比较好的本地数据库,也因此情有独钟。
今天给大家分享一下c++ 与Sqlite3 二进制插入与读取操作。
至于怎样使用c++开发sqlite我就不说了,自己百度google。
1.首先包含相关头文件:
#include “sqlite3.h”

#pragma comment(lib,”sqlite3.lib”)
2.创建数据库:
sqlite3 * db;
sqlite3_stmt *stat;
char *zErrMsg=0;
sqlite3_open(“F:\\C++\\sqlite\\Bin.db”,&db);
if(db==NULL)
{
return;
}
sqlite3_exec(db,”create table image (filename varchar(128) unique,img blob);”,0,0,&zErrMsg);

sqlite3_close(db);
3.将图片插入数据库:
sqlite3 * db;
sqlite3_stmt *stat;
char *zErrMsg=0;
FILE *fp=NULL;
long filesize=0;
char* ffile=NULL;
char* buf=NULL;
sqlite3_open(“F:\\C++\\sqlite\\Bin.db”,&db);
if(db==NULL)
{
return;
}
fp=fopen(“F:\\C++\\sqlite\\131.jpg”,”rb”);
if(fp!=NULL)
{
fseek(fp,0,SEEK_END);
filesize=ftell(fp);
fseek(fp,0,SEEK_SET);
ffile=new char[filesize];
size_t sz=fread(ffile,sizeof(char),filesize,fp);
fclose(fp);
}
//sqlite3_exec(db,”create table image (filename varchar(128) unique,img blob);”,0,0,&zErrMsg);
sqlite3_prepare(db,”insert into image values ('girl.jpg',?)”,-1,&stat,0);
sqlite3_bind_blob(stat,1,ffile,filesize,NULL);
sqlite3_step(stat);
delete[] ffile;
sqlite3_finalize(stat);
sqlite3_close(db);

4.导出图片:
sqlite3 * db;
sqlite3_stmt *stat2;
char *zErrMsg=0;
long filesize=0;
int rc;
char* buf=NULL;
sqlite3_open(“F:\\C++\\sqlite\\Bin.db”,&db);
if(db==NULL)
{
return;
}
sqlite3_prepare(db,”select * from image”,-1,&stat2,0);
sqlite3_step(stat2);
//while (rc == SQLITE_ROW)
FILE *fp2;
fp2=fopen(“F:\\C++\\sqlite\\Show.jpg”,”wb”);
const void *ImgData=sqlite3_column_blob(stat2,1);
int size=sqlite3_column_bytes(stat2,1);
size_t ret=fwrite(ImgData,sizeof(char),size,fp2);
fclose(fp2);

sqlite3_finalize(stat2);
sqlite3_close(db);
5.更新图片:sqlite3 * db;
sqlite3_stmt *stat;
char *zErrMsg=0;
FILE *fp=NULL;
long filesize=0;
char* ffile=NULL;
char* buf=NULL;
sqlite3_open(“F:\\C++\\sqlite\\Bin.db”,&db);
if(db==NULL)
{
return;
}
fp=fopen(“F:\\C++\\sqlite\\124.jpg”,”rb”);
if(fp!=NULL)
{
fseek(fp,0,SEEK_END);
filesize=ftell(fp);
fseek(fp,0,SEEK_SET);
ffile=new char[filesize];
size_t sz=fread(ffile,sizeof(char),filesize,fp);
fclose(fp);
}
sqlite3_prepare(db,”update image set img=? where filename='girl.jpg'”,-1,&stat,0);
sqlite3_bind_blob(stat,1,ffile,filesize,NULL);
sqlite3_step(stat);
delete[] ffile;
sqlite3_finalize(stat);
sqlite3_close(db);

 

这个软件已经写好很久,早已在博客上发表,只是刚刚发表两天,空间商就跑路了,数据也没拿回来,新买空间有点不大好,最近也没花太多时间来更新这个博客,所以一直搁在电脑里。
当时为了自己不要登陆QQ而写,同时也为了尽力做得通用。
包含SDK,STL,托盘图标,分隔字符串等内容,可以作为学习分享之用。如果有什么好的意见,请斧正。

主要代码:
// CloseIt.cpp : Defines the entry point for the application.

#include “stdafx.h”
#include “CloseIt.h”
#include
#include
#include
#include
using namespace std;

#define MYWM_NOTIFYICON WM_USER+1 //自定义消息

struct Time
{
int nHour;
int nMin;
int nSecond;
bool operator {
if(nHour*3600+nMin*60+nSecond return true;
else
return false;
}
};

//Global Variables
TCHAR szDef[20]=L”";
BOOL bStartHide=true;
BOOL bCheckTime=false;
vector vect;
Time tEnd;

INT_PTR CALLBACK CloseProgram(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK EnumWindowsProc(HWND,LPARAM);
void CenterWnd(HWND);
BOOL AutoRun();
void splitwstring(wstring,wstring,vector&);
Time GetTimeNow();
Time GetDTPTime(HWND);

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
AutoRun();
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_CLOSE), NULL, (DLGPROC)CloseProgram);
return 0;
}

INT_PTR CALLBACK CloseProgram(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);

static NOTIFYICONDATA nid;
static HINSTANCE hInstance=(HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE);

HMENU hMenu;
POINT pt;

switch (message)
{
case WM_INITDIALOG:
SetDlgItemText(hDlg,IDC_EDIT,L”QQ”);//设置关闭程序标题,初始值
CenterWnd(hDlg);
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = hDlg;
nid.uID = 1;
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.uCallbackMessage = MYWM_NOTIFYICON;
nid.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_CLOSEIT));
lstrcpyn(nid.szTip, TEXT(“Close it”), sizeof(nid.szTip)-1);//托盘提示名称
Shell_NotifyIcon(NIM_ADD, &nid);//显示托盘图标

PostMessage(hDlg,WM_COMMAND,IDC_BUTTON,0);//启动生效
return (INT_PTR)TRUE;

case WM_NCPAINT:
if(bStartHide)
{
ShowWindow(hDlg, SW_HIDE);
bStartHide=false;
}
break;
case WM_TIMER:
switch(wParam)
{
case 1:
if(bCheckTime)
{
if(tEnd EnumDesktopWindows(NULL,EnumWindowsProc,NULL);
}
else
{
EnumDesktopWindows(NULL,EnumWindowsProc,NULL);
}

break;
default:
break;
}
return (INT_PTR)TRUE;

case WM_SIZE:
if(wParam == SIZE_MINIMIZED)
{
ShowWindow(hDlg, SW_HIDE);//隐藏主窗口
}
return (INT_PTR)TRUE;
case MYWM_NOTIFYICON:
switch(lParam)
{
case WM_LBUTTONDOWN:
ShowWindow(hDlg, SW_HIDE);//隐藏主窗口

break;
case WM_LBUTTONDBLCLK:
ShowWindow(hDlg, SW_RESTORE);//Show主窗口
SetForegroundWindow(hDlg);
break;
case WM_RBUTTONDOWN:
GetCursorPos(&pt);
hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDC_CLOSEIT));
TrackPopupMenu (GetSubMenu (hMenu, 0), TPM_RIGHTALIGN,
pt.x, pt.y, 0, hDlg, NULL) ;
DestroyMenu(hMenu);
break;
default:
break;
}
break;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL||LOWORD(wParam)==IDM_EXIT)
{

NOTIFYICONDATA notifyIconData;
notifyIconData.cbSize = sizeof( notifyIconData );
notifyIconData.uID = 1;
notifyIconData.hWnd = hDlg;
Shell_NotifyIcon(NIM_DELETE, &notifyIconData);

EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
else if(LOWORD(wParam)==IDC_BUTTON)
{
TCHAR szTxt[6]=L”";
GetDlgItemText(hDlg,IDC_BUTTON,szTxt,sizeof(szTxt));
if(0==wcscmp(szTxt,L”Start”))
{
GetDlgItemText(hDlg,IDC_EDIT,szDef,20);
if(wcscmp(szDef,L”")==0)
{
MessageBox(hDlg,L”窗口标题不能为空”,L”错误”,MB_ICONERROR);
return (INT_PTR)TRUE;
}
splitwstring(szDef,L”,”,vect);//可以设置多个关闭程序标题,以逗号分隔

tEnd=GetDTPTime(hDlg);
SetDlgItemText(hDlg,IDC_BUTTON,L”Pause”);
SetTimer(hDlg,1,1000,NULL);
EnableWindow(GetDlgItem(hDlg,IDC_EDIT),false);

if(IsDlgButtonChecked(hDlg,IDC_CHECK_TIME)) EnableWindow(GetDlgItem(hDlg,IDC_DATETIMEPICKER),false);
}
else
{
SetDlgItemText(hDlg,IDC_BUTTON,L”Start”);
KillTimer(hDlg,1);
EnableWindow(GetDlgItem(hDlg,IDC_EDIT),true);
vect.clear();
if(IsDlgButtonChecked(hDlg,IDC_CHECK_TIME)) EnableWindow(GetDlgItem(hDlg,IDC_DATETIMEPICKER),true);
}
}
else if(LOWORD(wParam)==IDM_SHOW)
{
ShowWindow(hDlg, SW_RESTORE);//Show主窗口
}
else if(LOWORD(wParam)==IDC_CHECK_TIME)
{
if(IsDlgButtonChecked(hDlg,IDC_CHECK_TIME))
{
EnableWindow(GetDlgItem(hDlg,IDC_DATETIMEPICKER),false);
bCheckTime=true;
tEnd=GetDTPTime(hDlg);
}
else
{
EnableWindow(GetDlgItem(hDlg,IDC_DATETIMEPICKER),true);
bCheckTime=false;
}
}

break;
}
return (INT_PTR)FALSE;
}

//Enumerate windows
BOOL CALLBACK EnumWindowsProc(
HWND hwnd, // handle to parent window
LPARAM lParam // application-defined value
)
{
TCHAR szTitle[20]=L”";
::GetWindowText(hwnd,szTitle,20);
wstring strTitle=szTitle;
for(vector::iterator iter=vect.begin();iter!=vect.end();++iter)
{
if(strTitle.find(*iter)!=-1)//Contains
SendMessage(hwnd,WM_CLOSE,0,0);
}
/* //Equal
if(0==wcscmp(szTitle,szDef))
SendMessage(hwnd,WM_CLOSE,0,0);*/
return true;
}

//Move To Screen Center
void CenterWnd(HWND hWnd)
{
RECT rect;
GetWindowRect(hWnd, &rect);
int nWidth = rect.right – rect.left;
int nHeight = rect.bottom – rect.top;
SetWindowPos(hWnd, HWND_NOTOPMOST, (GetSystemMetrics(SM_CXSCREEN) – nWidth)/2, (GetSystemMetrics(SM_CYSCREEN) – nHeight)/2, 0, 0, SWP_NOSIZE);
}

/*============随开机启动===============*/
BOOL AutoRun()
{
TCHAR szFilePath[MAX_PATH + 1];
GetModuleFileName(NULL, szFilePath, MAX_PATH);
if(szFilePath[0]>96)szFilePath[0]-=32;
HKEY hKey;
RegCreateKey(HKEY_LOCAL_MACHINE,L”SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run”,&hKey);
RegSetValueEx(hKey,L”CloseIt”,0,REG_SZ,(CONST BYTE*)szFilePath,sizeof(szFilePath));
RegCloseKey(hKey);
return TRUE;
}

/*============逗号分隔字符串============*/
void splitwstring(wstring strIn,wstring strToken,vector &vect)
{
if(strIn.find(strToken)==-1)
{
vect.push_back(strIn);
return;
}
size_t nStart=0,nEnd=0;
size_t nTokenLength=strToken.length();
wstring strTmp;
while(strIn.find(strToken,nStart)!=-1)
{
nEnd=strIn.find(strToken,nStart);
strTmp=strIn.substr(nStart,nEnd-nStart);
vect.push_back(strTmp);
nStart=nEnd+nTokenLength;
}
if(strIn.find(strToken,nStart)==-1)
{
strTmp=strIn.substr(nStart,nEnd-nStart);
vect.push_back(strTmp);
}
}

/*============获得自定义系统时间==============*/
Time GetTimeNow()
{
Time time;
SYSTEMTIME sys;
GetLocalTime(&sys);
time.nHour=(int)sys.wHour;
time.nMin=(int)sys.wMinute;
time.nSecond=(int)sys.wSecond;
return time;
}

/*============获得时间控件时间==============*/
Time GetDTPTime(HWND hDlg)
{
SYSTEMTIME st;
Time time;
DateTime_GetSystemtime(GetDlgItem(hDlg,IDC_DATETIMEPICKER),&st);
time.nHour=(int)st.wHour;
time.nMin=(int)st.wMinute;
time.nSecond=(int)st.wSecond;
return time;
}
可执行程序及源码下载:
CloseIt.zip

© 2011 无邪世界 Suffusion theme by Sayontan Sinha