我开发共享软件的三次经历(上):打造一款很多人用的软件 – 西西吹雪

共享软件忽视,如今如同离我们家越来越远了。。还重要的人物使成为一体满意的WinZip吗?还重要的人物罢免netants吗?这些明快一代的明星,已逐步使液化在人文学科的视野中。。目前早已是收费软体的领域。互联网网络使命的高个儿,见自己释放形成图案,给共享软件敲响了丧钟。

共享软件,有什么价钱顺序员梦想过致富?。我也曾接合点共享软件的大潮中,用余暇研制过相像的人近十岁共享软件,至死,他们正中鹄的变得越来越大使液化了。,但穿着三的亲身经历,或许为我的顺序员过活抚养擦不掉的的记得。。

第自己:覆盖专家

不到数千猛然弓背跃起。。憎恨一向做自生自灭的情境,不过用户码是最大的。。05年前,次要网站下载的统计法。,事先数数达一万多个。,时至今日,信任应用因此软件的人数,这不是自己小数量。。它早已将近十年缺勤革新了。,依然使成为一体满意的户找到我需求的死去码。,或筹集改善提议。已经在《电脑报》上被刊文引见,它也包孕在几本发表正式声明上。。

次要的个:淘宝放开的老K,王

赚的比十万多相当。在这场合,我有机会,一份者极大数量。后头,鉴于周围的的更衣,软件失掉了它的使丧失。,天理使液化。憎恨赚的钱不多,但它在一定程度上使改变方向了我的过活。,因它是十万猛然弓背跃起。,城市里的基础。,我最后受胎自己的获名次。

第三个:Echung发生投标

这次最大的渴望得到的东西,我花的精神至多。,除非几千猛然弓背跃起。,最后完整废了。在这场合给我抚养了过于的亲身经历和训斥。,预测终身我也无力的忘却。

      我任务次要的步顺序员从顺序员到项目管理人,党当静东可以订购,感激您且对我们家同行的忍受。!

首要的篇:用软件覆盖很多人

从顺序员开端的那一天到晚起,我有自己协同的梦想,它正研制自己有很多人应用的软件。,免得产生这种情境,这终身值当,缺勤空白的。我一号研制的共享软件,覆盖专家,差不多如愿以偿了我的梦想。憎恨一向做自生自灭的情境,不过有相当多的用户。,下载网站抵达多特蒙德5万多个发光,信任应用因此软件的人,应当有几十万个。它早已将近十年缺勤革新了。,依然使成为一体满意的户找到我需求的死去码。,或筹集改善提议。已经在《电脑报》上被刊文引见,它也包孕在几本发表正式声明上。。

覆盖专家是自己很简略的软件。,它的功用可以用总之变明朗地了解。:按快捷键,马上覆盖指定的的窗口和托盘图标。。研制软件,首要的件事是为你自己。,当你关照试验走这条路,我轻快地按Alt X,QQ窗口、IE浏览顺序,衔接QQ托盘图标将使液化无踪。

2002的Delphi中研制了覆盖专家。。写因此软件,还要另自己含义,这是仿真。谈话写顺序的开端。,顺序行为准则是到何种地步任务的?,我什么都不发生。。发生研制覆盖专家,windows的音讯机制,至死,有自己更变明朗的看法。,也学到了很多Windows api的用法。

谢谢你的100万以上人口的提供公开讨论的媒体,这是自己很热的Delphi技术提供公开讨论的媒体。,从上面,我下载了亲300米的离线从科学实验中提取的价值。,它依然蓄电在我的移动硬盘上。。我差不多见过他们每自己人。,这是自己真正的救济金。,在某种程度上,100万以上人口的提供公开讨论的媒体是我的开蒙男教员。。

  

上面是因此小软件中用到的某个关键技术:

1.窗口覆盖:

覆盖窗口,率先你得找到窗户。,那是,穿越所局部窗户(finwindow, 两个API),于是看一眼窗口的在上加标题如果适合设定的影响。,免得适合,覆盖或显示窗口(显示窗口),这些都是发生Windows API来如愿以偿。

次要行为准则列举如下:

显示或覆盖在winlist窗口的各种的在上加标题。
procedure HideWindow(WinList:TStringList);
var
hCurWindow:HWND;
WinText:Array[0..255of char;
我:概数
begin
if winList = nil then exit;
hCurWindow:=GetWindow(FindWindow(Shell_TrayWnd,nil),GW_HWNDFirst);
While hCurWindow<>0 do
begin
if GetWindowText(hCurWindow,@WinText,255)>0 then
begin
for i:=0 to winlist.Count-1 do
begin
if词类(小写字母字母(i),lowercase(StrPas(@Wintext)))>0 then
begin
if IsShow then
begin
//覆盖窗口
ShowWindow(GetWindow(hCurWindow,GW_OWNER),SW_HIDE);
ShowWindow(hCurWindow,SW_HIDE);
end
else
begin
ShowWindow(GetWindow(hCurWindow,GW_OWNER),SW_SHOW);
ShowWindow(hCurWindow,SW_SHOW);
end;
end;
end;
end;
hCurWindow:=GetWindow(hCurWindow,GW_HWNDNEXT);
end;
end;

2.托盘图标覆盖

因此行使职责主要缺勤因特网上的从科学实验中提取的价值。,我花了很多工夫。。发生长工夫的思惟,最后找到了清算条件。我应用防波堤 来表托盘区域。,所局部图标都是自己ToolbarWind类的名字在刀杆窗口中找到,事到如今,应当有中肯的的方式。,读取刀杆钮扣的说法数据。,发生发送音讯显示或覆盖它。滑溜的藤瓜,至死,我们家找到了自己receiver 收音机。:

获取托盘区域图标列表的窗口句柄。,是自己toolbarwindow32类刀杆

function

 GetTrayHandle():THandle;   

var

 wnd,wnd2:HWND;

begin

  wnd := FindWindow(

Shell_TrayWnd

,

nil

);

  wnd2 := FindWindowEx(wnd,

0

,

TrayNotifyWnd

,

nil

);

  wnd := FindWindowEx(wnd2,

0

,

ToolbarWindow32

,

nil

);

if

 wnd=

0 then
begin

日报:= FindWindowEx(WND2,

0

,

TrayClockWClass

,

nil

);

日报:= getnextwindow(WND,GW_HWNDNEXT);

日报:= FindWindowEx(WND,

0

,

ToolbarWindow32

,

nil

);

胜利:= ]

end
else

胜利:= ]

end

;

覆盖托盘图标的功用
procedure HideIcon(strHint:string;bHide:boolean);
var
nItemCount,我:概数
chBuffer:array[0..255of char;
dwProcessID:DWORD;
hProcess:Cardinal;
adPointer:Pointer;
nNumberOfBytesRead:Cardinal;
bi:TTBBUTTON;
hWindow:THandle;
str1,str2:string;
begin
str1 := lowercase(strHint);
hWindow := GetTrayHandle;
nItemCount := SendMessage(hWindow, TB_BUTTONCOUNT, 00);
GetWindowThreadProcessId(hWindow, @dwProcessID);
hProcess := OpenProcess(PROCESS_VM_OPERATION + PROCESS_VM_READ + PROCESS_VM_WRITE,
false,
dwProcessID);
adPointer := VirtualAllocEx(hProcess,
nil,
4096,
MEM_RESERVE + MEM_COMMIT,
PAGE_READWRITE);
try
for i:=0 to nItemCount do
begin
获取刀杆钮扣的器鼓励说法数据。
SendMessage(hWindow, TB_GETBUTTON, i, integer(adPointer));
ReadProcessMemory(hProcess,
(adPointer),
@bi,
sizeof(bi),
nNumberOfBytesRead);
SendMessage(hWindow, TB_GETBUTTONTEXT , , integer(adPointer));
ReadProcessMemory(hProcess,
adPointer,
@chBuffer,
sizeof(chBuffer),
nNumberOfBytesRead);

相对地说法,决定图标如果覆盖。
str2:= lowercase(chBuffer);
if pos(str1,str2)>0 then
begin
if拜德then
sendmessage(hWindow,TB_HIDEBUTTON,,makelong(1,0))
else
sendmessage(hWindow,TB_HIDEBUTTON,,makelong(0,0));
exit;
end;
end
finally
VirtualFreeEx(hProcess,
adPointer,
0,
MEM_RELEASE);
CloseHandle(hProcess);
end;
end;

3.大局快速键招收

覆盖窗口的快捷键必需在什么都可以情境下都行过。,api行使职责的次要用途:RegisterHotKey,免得死去被迁移,于是理由给unregisterhotkey。

该软件还具有银幕用户用键盘输入和鼠标的功用。,当银幕,用户不克不及治理什么都可以用键盘输入或鼠标手术。,就像撞车平均,因此行使职责需求另自己API行使职责来如愿以偿。,它的方式,因此行使职责可以设置大局钩子。,衔接用键盘输入音讯和鼠标音讯,自己处置。免得你想迁移挂钩,于是命令UnhookWindowsHookEx行使职责来如愿以偿。

覆盖专家软件,招收费完全的不到1000元。,数以百计的人在天空软件站解释,因我早已很长工夫没能记住它了。,后头,见解释被迁移了。,根据几百猛然弓背跃起,也不识所踪。更使成为一体不堪入目的是。,天空软件站降低了覆盖的专家,我再也未查明它了。从赴中覆盖专家,应当说,我们家依然有很多用户的意向。,具有晴天的可行性。。使遭受否决票成。,我把它记为三分。:首要的,包装不敷。;二是缺少义卖市场营销。;三是国际共享软件的生存周围的不佳。

在这场合亲身经历,让我粗野了做共享软件赚钱否决票轻易,尤其地国际义卖市场。于是我关照一篇文字。,通知顺序员干自己MP3到CD的软件,在海外义卖市场,你可以收到5万猛然弓背跃起的招收费。,忠诚公开宣称,小软件确凿能赚很多钱。。我摇动了我的心,三灾八难的是,技术还不敷。,它还缺勤扩展到海外。,不断地不幸地。

但直到目前,我以为如今是发行不变的收费版本的时分了。,既然你赚不到钱,为什么不许更多的人收费应用呢?,这不也能有助于得出结论我悠远的意愿——研制一款很多人用的软件吗?由于重要的人物还要用它,或许这是一种成。。

  ———————————

        自己拙笔《顺序员次要的步–从顺序员到项目管理人》早已由人民邮电强迫征兵用印刷体写,感激您且的忍受。!

        当当网: 

发表评论

电子邮件地址不会被公开。 必填项已用*标注