• 2009-06-02

    [废话]摆平了搜狗浏览器 - [废话]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/sgzxy-logs/40319003.html

         搜狗浏览器(1.2 Beta)在Win7下的表现实在难以忍受,相比之下,IE 8简直与XP中完全不是一个样子了。

         但是搜狗提供的免费代理用了就会上瘾。

         于是我们Google一下把搜狗代理单独拿出来用的办法,就是单独启动一下代理的那个进程,很遗憾1.2版本后那个代理进程已作为浏览器的子进程存在,还会不断自动检测父进程是否存在。

         也有人抓包试图直接把搜狗的代理服务器给破解了,这个东西难度比较大,高手们还没成功,我也不多嘴了。

         看来办法就是每次都先打开搜狗浏览器,然后再启动其代理进程。

         用vbs写一个脚本很容易可以搞掂这个,结果就是每次开机都蹦出一个搜狗浏览器的窗口,你不得不去按一下最小化。同时还要忍受这个废物窗口要占据任务栏的一个位置。

         这自然是无法忍受的,必须想方设法把那个窗口给自动关了。vbs中没找到办法(也许WMI提供了,但我没找着),于是才想起C++。

         于是用CreateProcess来创建需要的进程,用FindWindow来找窗口,用ShowWindow来隐藏窗口。说是这么简单,但实际上搜狗非常恶心的还把窗口整了两层出来,用Spy++加ProcessExplorer反复试验了半天才给确定了。细节不说了,免得搜狗下次升级又想方设法地堵我的道……目前用的是1.3论坛预览版。

         终于,开机后,只是看到一个东西以0.1秒的速度闪现又消失,然后就可以舒舒服服地用上免费代理了。

         完。

    分享到:

    历史上的今天:

    [转载]Natal 2009-06-02

    评论

  • 教教我吧,谢谢啦,发我邮箱好么,我也在头疼怎么隐藏它
    回复wolf9232说:
    呵呵东西俺就不发了,免得别人看到纷纷索取,就把C++代码贴出来,自己把里面浏览器的路径改一下,编译后即可用。
    注意该次程序执行前要保证SougouExplorer的进程已经关闭才可用,否则会陷入死循环,当然任务管理器即可解决。
    #include <string.h>
    #include <stdio.h>
    #include <windows.h>

    typedef HANDLE (WINAPI * NewFunc) (HWND);

    BOOL FindAndHideWindow(LPTSTR className)
    {
    HWND hWin = FindWindow(className, NULL);
    return ShowWindow(hWin, SW_HIDE);
    }

    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrecInstance, LPSTR lpCmdLine, int iCmdShow )
    {
    LPTSTR szCmdline = TEXT("E:/应用软件包/网络软件/SogouExplorer/SogouExplorer.exe");
    STARTUPINFO info;
    memset(&info,0, sizeof(info));
    info.cb = sizeof(info);
    info.dwFlags = STARTF_USESHOWWINDOW;
    info.wShowWindow = SW_HIDE;
    PROCESS_INFORMATION procInfo;
    BOOL ret = CreateProcess(
    NULL,
    szCmdline,
    NULL,
    NULL,
    FALSE,
    0,
    NULL,
    NULL,
    &info,
    &procInfo
    );

    while( !FindAndHideWindow(TEXT("SE_SogouExplorerFrame")) );
    FindAndHideWindow(TEXT("SE_MainFrameBg"));

    szCmdline = TEXT("E:/应用软件包/网络软件/SogouExplorer/SogouExplorer.exe -proxy E:/应用软件包/网络软件/SogouExplorer/at1.dll");
    CreateProcess(
    NULL,
    szCmdline,
    NULL,
    NULL,
    FALSE,
    0,
    NULL,
    NULL,
    &info,
    &procInfo
    );
    }
    2009-06-16 16:13:43