xml version="1.0" encoding="utf-8" standalone="yes"12bet++博客-iwindowshttp://www.fometaux.com/iwindows/zh-cnMon, 25 Mar 2019 05:03:26 GMTMon, 25 Mar 2019 05:03:26 GMT6012bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2018/09/26/215947.htmlvic.MINgvic.MINgWed, 26 Sep 2018 07:53:00 GMThttp://www.fometaux.com/iwindows/archive/2018/09/26/215947.htmlhttp://www.fometaux.com/iwindows/comments/215947.htmlhttp://www.fometaux.com/iwindows/archive/2018/09/26/215947.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/215947.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/215947.html阅读全文

明升88 2018-09-26 15:53 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2018/09/20/215942.htmlvic.MINgvic.MINgThu, 20 Sep 2018 06:11:00 GMThttp://www.fometaux.com/iwindows/archive/2018/09/20/215942.htmlhttp://www.fometaux.com/iwindows/comments/215942.htmlhttp://www.fometaux.com/iwindows/archive/2018/09/20/215942.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/215942.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/215942.html阅读全文

明升88 2018-09-20 14:11 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2018/09/12/215919.htmlvic.MINgvic.MINgWed, 12 Sep 2018 03:57:00 GMThttp://www.fometaux.com/iwindows/archive/2018/09/12/215919.htmlhttp://www.fometaux.com/iwindows/comments/215919.htmlhttp://www.fometaux.com/iwindows/archive/2018/09/12/215919.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/215919.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/215919.html系统 必须 Ubuntu 16 64位的。
1、Ubuntu 使用 shadowsocks Flip the wall
   安装:
在终端下执行命令安装:
apt-get install python-pip
      pip install shadowsocks
   配置:
创建 /etc/shadowsocks.json 文件, 内容如下
{
          "server": "XXX.XXX.XXX.XXX",
          "server_port": XXXX,
          "local_address":"127.0.0.1",
          "local_port":1080,
          "password": "XXXXXX",
          "method": "rc4-md5",
          "timeout":300,
          "fast_open":false
      }
   启动ss客户端:
         sslocal -c /etc/shadowsocks.json
   http代理:
终端安装Polipo
   sudo apt-get install polipo
修改配置文件/etc/polipo/config,内容如下
# This file only needs to list configuration variables that deviate
      # from the default values.  See /usr/share/doc/polipo/examples/config.sample
      # and "polipo -v" for variables you can tweak and further information.

      logSyslog = true
      logFile = /var/log/polipo/polipo.log

      socksParentProxy = "127.0.0.1:1080"
      socksProxyType = socks5

      chunkHighMark = 50331648
      objectHighMark = 16384

      serverMaxSlots = 64
      serverSlots = 16
      serverSlots1 = 32

      proxyAddress = "0.0.0.0"
      proxyPort = 8123
开启新终端,重启Polipo
   /etc/init.d/polipo restart
   浏览器设置(可选):
Firefox中,首选项—常规—网络代理 中设置:
   创建脚步:
方便使用,创建 shadow.sh 脚步
   #!/bin/bash
         #shadow.sh
         sslocal -c /etc/shadowsocks.json
每次 Flip the wall 时候,在新终端中启动,shadow.sh 即可。
2、编译 CEF
   设置终端 Flip the wall:
这里 打开一个终端 实行 shadow.sh
打开另一个终端(以后操作都在该终端完成),实行:
   export http_proxy=http://127.0.0.1:8123
         export https_proxy=http://127.0.0.1:8123
   创建目录:
这里cef代码目录 为 /home/system/cef 中
在cef目录中创建文件夹:
   mkdir ~/cef/automate
         mkdir ~/cef/chromium_git
   下载运行脚步:install-build-deps.sh
   cd ~/cef
         sudo apt-get install curl
         curl 'https://chromium.googlesource.com/chromium/src/+/master/build/install-build-deps.sh?format=TEXT' | base64 -d > install-build-deps.sh
         chmod 755 install-build-deps.sh
         sudo ./install-build-deps.sh
   安装 libgtkglext1-dev:
   sudo apt-get install libgtkglext1-dev
   下载安装 depot_tools:
使用git 下载 depot_tools
   cd ~/cef
         git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
设置 depot_tools 环境变量:
   export PATH=/home/system/cef/depot_tools:$PATH
   下载cef代码:
下载 automate-git.py ,使用 automate-git.py 来中git中下载的cef
   cd ~/cef/automate
         wget https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py
创建 ~/cef/chromium_git/update.sh
   #!/bin/bash
         python ../automate/automate-git.py --download-dir=/home/system/cef/chromium_git --depot-tools-dir=/home/system/cef/depot_tools --no-distrib --no-build
终端执行刚刚创建的update.sh,下载cef代码
   cd ~/cef/chromium_git
         chmod 755 update.sh
         ./update.sh
下载漫长... 这里有从git上下载的 depot_tools工具 和 cef 代码 。可以直接拷贝过来就用,不过别忘了设置depot_tools的环境变量。
   获取第三方库代码:
   cd ~/cef/chromium_git/chromium/src
         gclient sync
   创建 Ninja 工程文件
创建 ~/cef/chromium_git/chromium/src/cef/create.sh 文件,文件内容
   #!/bin/bash
         ./cef_create_projects.sh

        执行该脚步
   cd ~/cef/chromium_git/chromium/src/cef
         chmod 755 create.sh
         ./create.sh
   创建沙箱:
   cd ~/cef/chromium_git/chromium/src
         export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox
         sudo BUILDTYPE=Debug_GN_x64 ./build/update-linux-sandbox.sh
   Ninja 编译 cef/chromium
cd ~/cef/chromium_git/chromium/src
      ninja -C out/Debug_GN_x64 cef chrome_sandbox

      


明升88 2018-09-12 11:57 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2013/01/08/196922.htmlvic.MINgvic.MINgTue, 08 Jan 2013 07:08:00 GMThttp://www.fometaux.com/iwindows/archive/2013/01/08/196922.htmlhttp://www.fometaux.com/iwindows/comments/196922.htmlhttp://www.fometaux.com/iwindows/archive/2013/01/08/196922.html#Feedback2http://www.fometaux.com/iwindows/comments/commentRss/196922.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/196922.html
一 编译工具及环境


        操作系统:Windows 7 Ultimate

      开发环境:Visual Studio 2005 Professional

      源码下载:http://code.ijinshan.com


      SDK:

             Microsoft Windows SDK v6.0A
                        
          电脑里装了Windows 7的平台SDK但使用有些问题,编辑的时候在讲解。


 

二 开发环境搭建

   其实这步可以略过……因为我装了Winodws 7 Platform SDK 配置了一下环境而已。如果要配置v6.0A的话编译时候可以解决不少问题哦~

               
   

 
三 编译金山卫士
  1. 浏览一下相关的Readme.txt 
     1 = 开源作品根索引 =
     2 http://code.ijinshan.com/hg/
     3 +-- pcmamager   110317 release:开源卫士整体 可编译学习版本!
     4                 110311 release:开源卫士整体
     5 +-- kclear      110113 release:卫士垃圾清理
     6 +-- ksm         101226 release:卫士主界面
     7 +-- karpfw      101218 release:卫士ARP防火墙
     8 +-- sysopt      101209  release:系统优化 之 开机加速器
     9 +-- bksafevul   101201  release:漏洞扫描器
    10 +-- ppro        101201  release:隐私保护器

    1 外部库包:
    2 http://code.ijinshan.com/download/LIB4pcmanager.tbz
    3 下载后,将其中子目录覆盖 pcmanager 目录;
    4 即:LIB4pcmanager
    5 ├── lib
    6 └── src
    7 将 lib 和 src 目录,覆盖 pcmanager 目录中的对应同名目录

    了解一下,按照Readme照着做就OK了~!

  2. 工程编译 pcmanager 内工程

    最先需要编译的工程 
    commonlib.sln
    需要把工程中,12bet的包含文件的E:\winsdk\v6.0\Include 改为 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include  、 Lib的包含路径改为 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
    编译工程,结果出现:
          
    原因是因为uuid.lib的版本跟VS 2005的版本不匹配,使用的uuid.lib比较新……
    将你使用的Microsoft SDKs放在最后就行了,重新编译通过。
          

    编译主工程 
    ksafe.sln
    注意修改Microsoft Windows SDK v6.0A相关的include、lib位置,以后工程都需要修改,这里不在强调了。
    这个工程应该没有打问题,可以直接编译过去的。

    编译垃圾清理 
    kclear.sln
    编译工程,错误提示:
          
    查看工程设置,因为依赖于
    kuipack.exe。
          
    所有需要把 \oss\kclear\tools\kuipack.exe 复制到 \oss\pcmanager\tools\kuipack.exe 中,即可编译通过。

    编译其他工程:avcenter.sln、bkver.sln、kmsspeed.sln、kprocesslib.sln、ksafeperfopt.sln、ksafesvc.sln、softmgr.sln、sysopt.sln、vulfix.sln 顺利通过。
    空工程或问题工程:lang.sln、PluginEngine.sln、safemon.sln、ksafeinstaller.sln、onekeyinstall.sln、ksafe.sdk\ksafe.sdk.sln、ksafe.zhangrui\ksafe.zhangrui.sln 空工程。
                               KSafeMain.sln(这个工程缺少子工程,但觉得无伤大雅,个人未编译。)


  3. 工程编译 oss 中 pcmanager 以外工程

    当然先把几个工程配置一下C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include  和 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib。
    然后编译 bksafevul、karpfw、kclear、ksm、sysopt 中的工程文件。其中 ppro 没找到相关工程文件,不过有.vcproj文件(有些懒,这工程就放弃了~~~,感兴趣的可以工程打开编译一下。)
    这几个编译几乎没有什么大问题。有的都是磕磕绊绊的小毛病,细心改一下就OK了。

    karpfw工程 :自己设置一下依赖路径。..\..\import\kxe_improve_lib\win32\base_lib
             

    ksm工程:md5.c 设置一下不依赖头文件编译。
             




    最后看一下成果,收工:


明升88 2013-01-08 15:08 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2012/10/30/194065.htmlvic.MINgvic.MINgTue, 30 Oct 2012 02:10:00 GMThttp://www.fometaux.com/iwindows/archive/2012/10/30/194065.htmlhttp://www.fometaux.com/iwindows/comments/194065.htmlhttp://www.fometaux.com/iwindows/archive/2012/10/30/194065.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/194065.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/194065.html在主程序初始化时加入

DeclareDumpFile();

创建头文件DumpFile.h, 将下列代码放进文件中

#pragma once
#include 
<windows.h>
#include 
<Dbghelp.h>
#include 
<iostream>  
#include 
<vector>  
using namespace std; 


#pragma comment(lib, 
"Dbghelp.lib")


namespace NSDumpFile

    
void CreateDumpFile(LPCSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException)  
    
{  
        
// 创建Dump文件  
        
//  
        HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);  


        
// Dump信息  
        
//  
        MINIDUMP_EXCEPTION_INFORMATION dumpInfo;  
        dumpInfo.ExceptionPointers 
= pException;  
        dumpInfo.ThreadId 
= GetCurrentThreadId();  
        dumpInfo.ClientPointers 
= TRUE;  


        
// 写入Dump文件内容  
        
//  
        MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);  


        CloseHandle(hDumpFile);  
    }
  


    LPTOP_LEVEL_EXCEPTION_FILTER WINAPI MyDummySetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
    
{
        
return NULL;
    }



    BOOL PreventSetUnhandledExceptionFilter()
    
{
        HMODULE hKernel32 
= LoadLibrary(_T("kernel32.dll"));
        
if (hKernel32 ==   NULL)
            
return FALSE;


        
void *pOrgEntry = GetProcAddress(hKernel32, "SetUnhandledExceptionFilter");
        
if(pOrgEntry == NULL)
            
return FALSE;


        unsigned 
char newJump[ 100 ];
        DWORD dwOrgEntryAddr 
= (DWORD) pOrgEntry;
        dwOrgEntryAddr 
+= 5// add 5 for 5 op-codes for jmp far


        
void *pNewFunc = &MyDummySetUnhandledExceptionFilter;
        DWORD dwNewEntryAddr 
= (DWORD) pNewFunc;
        DWORD dwRelativeAddr 
= dwNewEntryAddr -  dwOrgEntryAddr;


        newJump[ 
0 ] = 0xE9;  // JMP absolute
        memcpy(&newJump[ 1 ], &dwRelativeAddr, sizeof(pNewFunc));
        SIZE_T bytesWritten;
        BOOL bRet 
= WriteProcessMemory(GetCurrentProcess(),    pOrgEntry, newJump, sizeof(pNewFunc) + 1&bytesWritten);
        
return bRet;
    }



    LONG WINAPI UnhandledExceptionFilterEx(
struct _EXCEPTION_POINTERS *pException)
    
{
        TCHAR szMbsFile[MAX_PATH] 
= 0 };
        ::GetModuleFileName(NULL, szMbsFile, MAX_PATH);
        TCHAR
* pFind = _tcsrchr(szMbsFile, '\\');
        
if(pFind)
        
{
            
*(pFind+1= 0;
            _tcscat(szMbsFile, _T(
"CrashDumpFile.dmp"));
            CreateDumpFile(szMbsFile, pException);
        }



        
// TODO: MiniDumpWriteDump
        FatalAppExit(-1,  _T("Fatal Error"));
        
return EXCEPTION_CONTINUE_SEARCH;
    }



    
void RunCrashHandler()
    
{
        SetUnhandledExceptionFilter(UnhandledExceptionFilterEx);
        PreventSetUnhandledExceptionFilter();
    }

}
;


#define DeclareDumpFile() NSDumpFile::RunCrashHandler();

 




明升88 2012-10-30 10:10 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2012/10/10/193114.htmlvic.MINgvic.MINgWed, 10 Oct 2012 07:03:00 GMThttp://www.fometaux.com/iwindows/archive/2012/10/10/193114.htmlhttp://www.fometaux.com/iwindows/comments/193114.htmlhttp://www.fometaux.com/iwindows/archive/2012/10/10/193114.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/193114.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/193114.html        

检测是不是Win7系统
bool IsWindows7()
{
    OSVERSIONINFOEX osvi;
//    bool bOsVersionInfoEx=false;
    DWORD dwType=0UL;
    
bool bWin7=false;
    ZeroMemory(
&osvi, sizeof(SYSTEM_INFO));
    ZeroMemory(
&osvi, sizeof(OSVERSIONINFOEX));
    osvi.dwOSVersionInfoSize 
= sizeof(OSVERSIONINFOEX);
    BOOL bOsVersionInfoEx 
= GetVersionEx ((LPOSVERSIONINFOA) &osvi);
    
if!(bOsVersionInfoEx) )
        
return false;
    
if(osvi.dwMajorVersion==6)
    
{
        
if(osvi.dwMinorVersion==1)
        
{
            
if(osvi.wProductType==VER_NT_WORKSTATION)
            
{
                bWin7
=true;
            }

        }

    }

    
return bWin7;
}



Win8系统马上要上市了,开发需要想实现iPad或Android系统里触摸书写板的动态弹出和动态消失效果。
单位工作系统是Win7,测试平板是Win8的,的在这里只做了一下Win7手写板的截图。
          

关于书写板的弹出:
Win7、Win8弹出书写板并没有什么差别。都是外部调用TabTip.exe而已。

void ExecuteTabTip()
{
    TCHAR tcProgramFile[MAX_PATH];
    SHGetSpecialFolderPath(NULL,tcProgramFile,CSIDL_PROGRAM_FILES,0);
    
char *token;
    
char seps[]   = "\\";
    token = strtok( tcProgramFile, seps );
    std::string strPath = token;
    strPath = strPath + "\\Program Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe";
    ShellExecute(NULL, "open", strPath.c_str(), NULL, NULL, SW_SHOWNA);
}



关于书写板的消失:
Win7中的方法。
void TerminateTabTip4Win7()
{
    DWORD WM_DESKBAND_CLICKED = ::RegisterWindowMessage(_TEXT("TabletInputPanelDeskBandClicked"));

    HWND wKB = ::FindWindow(_TEXT("IPTip_Main_Window"), NULL);
    
if(wKB != NULL && ::IsWindowVisible(wKB))
    
{
        ::PostMessage(wKB, WM_DESKBAND_CLICKED, 00);
    }

}

Win8中的方法。
void TerminateTabTip4Win8()
{
   HWND wKB = ::FindWindow(_TEXT("IPTip_Main_Window"), NULL);
   
if(wKB != NULL && ::IsWindowVisible(wKB))
   
{
       ::PostMessage(wKB, WM_SYSCOMMAND, SC_CLOSE, 0);
   }

}

Win8下书写板停靠代码
      HWND wKB = ::FindWindow(_TEXT("IPTip_Main_Window"), NULL);
      DWORD WM_DOCK_BUTTON_PRESSED = ::RegisterWindowMessage(_TEXT("IPTipDockButtonPressed")); 
      
PostMessage(wKB, WM_DOCK_BUTTON_PRESSED, 0, 0);





明升88 2012-10-10 15:03 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2012/10/10/193111.htmlvic.MINgvic.MINgWed, 10 Oct 2012 06:25:00 GMThttp://www.fometaux.com/iwindows/archive/2012/10/10/193111.htmlhttp://www.fometaux.com/iwindows/comments/193111.htmlhttp://www.fometaux.com/iwindows/archive/2012/10/10/193111.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/193111.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/193111.html阅读全文

明升88 2012-10-10 14:25 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2010/10/20/130504.htmlvic.MINgvic.MINgTue, 19 Oct 2010 16:24:00 GMThttp://www.fometaux.com/iwindows/archive/2010/10/20/130504.htmlhttp://www.fometaux.com/iwindows/comments/130504.htmlhttp://www.fometaux.com/iwindows/archive/2010/10/20/130504.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/130504.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/130504.html阅读全文

明升88 2010-10-20 00:24 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2010/09/11/126383.htmlvic.MINgvic.MINgSat, 11 Sep 2010 01:29:00 GMThttp://www.fometaux.com/iwindows/archive/2010/09/11/126383.htmlhttp://www.fometaux.com/iwindows/comments/126383.htmlhttp://www.fometaux.com/iwindows/archive/2010/09/11/126383.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/126383.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/126383.html
   已经学习OpenGL一小段时间了,断断续续的。虽说没什么长进,但是感觉还是有一些入门。主要是看NEHE的教程(NEHE OpenGL Tutorials),有些东西很有深度,感觉很遥远……只是一个多看多学的过程,看不懂一遍,可以看第二遍、第三遍,每一遍都会有所收获的。

   学习OpenGL的初衷是为了做游戏,所以也在研究《学OpenGL编3D游戏》的教程。关于OpenGL的东西还是做得很少,想在其基础上做一个第一人称射击游戏,但在写它之前还是想对OpenGL做一些系统学习和总结,肯定会有不小的收获的。

   就从这里开始吧!网络为学习提供了极大的方便,有很多大牛,我会不断的把我学到的东西,整理到这个12bet怎么样当中,放弃了网易,以为感觉这里更规范,是一个适合于程序员的专用12bet怎么样(^o^)。



   一个基于NEHE框架的MFC OpenGL向导,这儿是在网上发现的一个很不错的东东,十分实用。以下是说明和下载(参考文档):
  
   下载:NEHE向导文件.rar  (NEHE框架,for VC6)


   以框架为例,首先看看里面的说明

      1、拷贝awx文件到vc6安装目录下($Install_Directory\Common\MSDev98\Bin\IDE);
      2、打开VC6,新建工程,选择MFC OpenGL AppWizard向导,输入新建工程名;
      3、向导第二步,设置分辨率和屏幕深度,点示“完成”按钮;(注:最好选择1024*768,和 32bit)
      4、选择左侧ClassView(类视导航),打开新建工程的类树;
      5、在类树下,打开CMainFrame类;
      6、点击到CMainFrame下的成员函数RenderGLScene。
            修改glBegin(GL_QUADS)到glEnds()之间的代码。

            好了,简单手动敲入:
            


glBegin(GL_QUADS);

   ……   

glEnd();


改成→


glBegin(GL_TRIANGLES);

   glVertex3f(-1,0,0);

   glVertex3f(1,0,0);

   glVertex3f(0,1,0);

glEnd();


            怎么样?一个底边为2,高为1的三角形。

            单位就是opengl坐标轴单位,三个顶点(x,y,z)分别在(-1,0,0),(1,0,0),(0,1,0); 
            opengl坐标轴(x-y-z右手系):你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的就是z正轴啦。

            (注:glTranslatef为了把图形移后点,因为屏幕平面就是x-y平面嘛,所以向z负轴移后点看得清楚;glRotatef实现了旋转,同时绕三个轴,三个*rot是速度啦。)
   
   行为决定态度。


 



明升88 2010-09-11 09:29 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2010/07/22/121062.htmlvic.MINgvic.MINgThu, 22 Jul 2010 13:22:00 GMThttp://www.fometaux.com/iwindows/archive/2010/07/22/121062.htmlhttp://www.fometaux.com/iwindows/comments/121062.htmlhttp://www.fometaux.com/iwindows/archive/2010/07/22/121062.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/121062.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/121062.html一 编译工具及环境

操作系统:Windows XP SP2、SP3

开发环境:Visual Studio 2005 Professional

版本控制工具:TortoiseSVN

说明:用来下载程序源代码,直接选检出,然后输入

https://guliverkli.svn.sourceforge.net/svnroot/guliverkli/trunk/guliverkli/

这个地址(源代码地址)把代码检出到本地。

SDK:

1. DirectX 9 SDK(需要DirectShow)

说明:DirectX SDK Summer 2004之后DirectShow不被整合到DirectX SDK中而是以Extras

的形式发布,它的最后一个版本为DirectX SDK Extras 2005,2 版。之后它被整合到Windows SDK中。而VS2005的WinSDK中不包含DirectShow。方便起见我下载的老版本DirectX 9.0b SDK。

地址:http://www.directshow.cn/SDK/DX9SDK.rar

2. Windows Media Format SDK 9

地址:http://download.microsoft.com/download/3/0/4/30451651-9e47-4313-89a3-5bb1db003c26/WMFormatSDK.exe

 

 

二 开发环境搭建

也就是包含一下刚刚提到的SDK目录,下载安装所需SDK,由于源代码的文档中提到

“you may need to add "Debug Unicode" and "Release Unicode" configs to the project file of the directshow baseclasses”所以需要先编译DirectShow中的BaseClasses程序。

编译时需要在VS2005的包含文件里添加

X:\DXSDK\Include

X:\DXSDK\Samples\12bet\DirectShow\BaseClasses

步骤:工具=>选项=>项目和解决方案=>V12bet目录=>包含文件

因为BaseClasses代码中都是用<>包含的头,所以我把本身的路径加到了系统中。

编译BaseClasses时大概会发生三类错误:

1. 提示POINTER_64未定义

原因:这是由于PlatformSDK和DirectXSDK中的同名头文件basetsd.h冲突造成的,PlatformSDK中的定义了POINTER_64而DirectXSDK没有定义却默认先编译,导致winnt.h中找不到POINTER_64。

解决办法:在刚提到的包含文件中确保系统文件在上边,然后

右键=>工程=>属性=>C/12bet=>常规中清空附加包含目录(因为会优先编译这里的路径)。

2. 返回值默认不为int

原因:VS2005相对于VS2003和VC6编译相对严格,函数无返回值不能默认为int

解决方法:将提示错误的operator=(LONG);加返回值int,因为我没找到此重载的实现,返回什么无所谓了。或者右键=>工程=>属性=>C/12bet=>命令行中附加选项添加/wd4430使其默认返回int

3. 未定义的局部变量

原因:也是由于VS2005之前版本在for中定义的变量看做是for外定义可以拿到循环以外使用,而VS2005不可以。

解决方法:将其报错地方的定义,拿到for外定义。或者右键=>工程=>属性=>C/12bet=>语言中的强制for循环范围中的一致性选否。还有一处static变量加上DWORD定义就可以了。

这样基本就可以编译通过了。

然后将Debug Unicode 和 Release Unicode目录包含到系统中。

步骤:工具=>选项=>项目和解决方案=>V12bet目录=>包含库

然后还需要包含几个文件和库,具体如下图





为了以后方便DirectShow的开发我把可能用到的都加在了里边。

 

 

三 编译Media Player Classic

1. 编译顺序

  HowToCompile中提到要按照一定顺序编译才可以成功。

  而且在调试阶段我统一以Debug Unicode形式编译。

  顺序如下:

  1. deccs

  2. dsutil

  3. ui (run \lib\ui.bat to merge them)

  4. subpic

  5. subtitles

  6. filters (for mpc only build those configurations which output a lib, the rest outputs stand-   alone filters)

  7. apps\mplayerc

 

2. 编译时遇到的问题和解决方法

  按照编译顺序一一解决

  ① 编译deccs通过。在lib目录里生成decssDU.lib。

 

  ② 编译dsutil通过。在lib目录里生成dsutilDU.lib。

 

  ③ 编译ui通过。在lib目录里声称sizecbarDU.lib、ResizableLibDU.lib、CmdUIDU.lib、   TreePropSheetDU.lib。

 

  ④ 编译subpic通过。在lib目录里生成subpicDU.lib。

 

  ⑤ 编译 subtitles出现好多错误。查看源代码发现字符数组定义有问题,缺少 ' 。

  解决方法:在CCDecoder.cpp中第127行定义的static WCHAR charmap[0x60]把其初始化   中的?都补上右侧的 ' 。通过之后在lib目录里生成libssfDU.lib和subtitlesDU.lib。

 

  ⑥ 编译filters(Debug Unicode Lib形式) 失败。好多提示无法打开文件strmbaseDU.lib。还有许多关于Ap4文件没找到的错误。

解决方法:不知道为什么最新下载的MPC源代码会缺少以前的几个项目如图:




strmbaseDU.lib就是以前BaseClasses生成的,不过没关系这个应该和刚刚编译DirectShow中的BaseClasses是同样的,刚刚已经包含了Debug Unicode只不过那个生成文件名为strmbasd.lib,只要复制一份strmbaseDU.lib就可以了。其他版本的编译同理。

AP4文件那个需要把

X:\guliverkli\src\filters\parser\mp4splitter\AP4\Update\v0.6.3\Bento4_0.6.3-001.7z解压后把

Source文件夹拷贝到X:\guliverkli\src\filters\parser\mp4splitter\AP4\ 目录下。再用

X:\guliverkli\src\filters\parser\mp4splitter\AP4\Update\v0.6.3\Source文件夹去覆盖更新一下。

继续编译,FLVSplitter.h中出现两个错误提示找不到VP62.h和VP62.cpp。进入报错代码,注释着//comment this out if you don't have VP62.cpp/h,所以将此行注释掉就可以了,并在项目文件列表中将VP62.h和VP62.cpp从项目中移除。重新编译这个项目,通过。在lib目录中生成FLVSplitterDU.lib、TreePropSheetDU.lib、MP4SplitterDU.lib等等多个lib文件。

 

  ⑦编译mplayerc出现三个错误。一个是SubmitNotPlayFileDlg.cpp未找到,另两个是错误D3D9b_SDK_VERSION和MixerPref9_RenderTargetYUV未声明的标识符。

解决方法:找到mpayerc项目中的SubmitNotPlayFileDlg.cpp和SubmitNotPlayFileDlg.h从该项目移除。然后到vmr9.h中找到enum __MIDL___MIDL_itf_vmr9_0012_0001这个枚举在最后添加MixerPref9_RenderTargetYUV = 0x00002000。

最后在d3d9.h中加入#define D3D9b_SDK_VERSION 32  (常量有可能不准确)。

继续编译,提示无法打开文件RadGtSplitterDU.lib,由于这个项目已经没有了,所以去连接器中把包含去掉。步骤:右键mplayerc项目 工程=>属性=>连接器=>输入,在附加依赖项中把RadGtSplitterDU.lib去掉。

继续编译,成功。Mplayerc下的Debug Unicode目录会生成mplayerc.exe。

运行,会出现以下图示,到此Media Player Classic编译成功。



明升88 2010-07-22 21:22 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2010/01/30/106830.htmlvic.MINgvic.MINgSat, 30 Jan 2010 08:06:00 GMThttp://www.fometaux.com/iwindows/archive/2010/01/30/106830.htmlhttp://www.fometaux.com/iwindows/comments/106830.htmlhttp://www.fometaux.com/iwindows/archive/2010/01/30/106830.html#Feedback0http://www.fometaux.com/iwindows/comments/commentRss/106830.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/106830.html      Windows 7真帅呀!不过刚按完 Visual Studio 2008 SP1和 SQL Server 2008。就被第一个问题磕到了!

      在 Visual 12bet 2008 中编译程序,出错了!编译器提示:

            fatal error C1853: “Debug\***.pch”意外的预编译的头,只需重新运行编译器可能会解决此问题。
            fatal error C1853: “Debug\***.pch”预编译头文件来自编译器的早期版本,或者预编译头为 12bet 而在 C 中使用它(或相反)

      问题不大~清空项目,重新编译就OK啦!这个可难不倒我。结果重新n回也不灵…… 真迷糊呀!



      最终在微软帮助中找到了答案:当使用 Visual c + + 2008年编译器时出现错误消息:"致命错误 C1859"

      症状
      
            您在运行 Microsoft Visual c + + 2008年编译器来编译文件,或生成项目时您会收到以下错误消息:

         致命错误 C1859: header file name 意外的预编译的头,只需重新运行编译器可能会解决此问题。

            此外,此问题仍然出现甚至当您运行编译器再次。 当您启用 Windows 7 或 Windows Server 2008 正在运行的计算机上的 创建/使用预编译头 编译器选项时,会发生此问题。

      原因

            当启用了 创建/使用预编译头 编译器选项时,编译器要求预编译的头文件和相对的模块不移动各编译间。但是,地址空间布局随机 (也称为 ASLR) 功能随机重新定位在进程中的模块。因此,各编译间移动的模块时,将发生该错误。

      解决方案

            简单点说呀!就是安装补丁   VS90SP1-KB976656-x86.exe
            这里我提供了个下载地址,因为微软下载必须接受附带的许可条款才能使用此软件。





明升88 2010-01-30 16:06 发表评论
]]>
12bet++博客-iwindowshttp://www.fometaux.com/iwindows/archive/2010/01/30/106829.htmlvic.MINgvic.MINgSat, 30 Jan 2010 08:04:00 GMThttp://www.fometaux.com/iwindows/archive/2010/01/30/106829.htmlhttp://www.fometaux.com/iwindows/comments/106829.htmlhttp://www.fometaux.com/iwindows/archive/2010/01/30/106829.html#Feedback4http://www.fometaux.com/iwindows/comments/commentRss/106829.htmlhttp://www.fometaux.com/iwindows/services/trackbacks/106829.html      嘿嘿!在12bet12bet怎么样中的第一篇文章,居然写给了我的本本,买本也有一段时日了,这次要自己装系统,盗版的肯定不甘心!
      在淘宝上致了几张ThinkPad R400的恢复盘,Windows XP Pro SP2、Windows Vista Ultimate SP1和Windows 7 Ultimate。
      最想装的非Windows 7莫属,Xp都用恶心了……但要刷BIOS Slic2.1,才能用Think-OEM版恢复光盘安装Windows 7。这个我也是鼓足了勇气才做的一些操作!

      下载Slic2.1、Marker及UltraISO工具:  下载

            

      到 Think服务与支持 / 驱动和软件 去找对应型号的BIOS驱动R400的是:(7uuj35us即是7U开头)在“Thinkpad slic2.1 182 Bytes”文件夹中找到“TP-7U.bin”重命名为:7U.bin

      使用SLIC_Dump_ToolKit(要用管理员运行)查看自己的BIOS是否有原生的slic并选择正确的slic文件(下图是已刷过的):

                  

      使用UltraISO将dos.img镜像写入U盘,即制作好了启动盘。附件里有ultraiso及注册码。

      制作启动盘具体步骤:

         1.启动UltraISO(Vista/Win7要用管理员运行),点击菜单中的“文件”->“打开”,载入“dos.img”(win98启动盘镜像加强版)。
 

            

         2.插入U盘,点击菜单中的“启动”-“写入硬盘镜像……”。

            

         3.然后在弹出的“写入硬盘镜像”窗口中做如下设置:硬盘驱动器选择你刚刚插入的U盘,写入方式选择“USB-HDD+”。

            

         4.设置好后点击“写入”按钮。写入完成后,窗口的上半部分的“消息框”中会提示“写入成功”。
                 此时U盘中有三个文件:
                        DRVSPACE.BIN
                        IO.SYS
                        MSDOS.SYS

         5. 把Marker.exe和前面确认Thinkpad型号对应的slic2.1文件(本人是7U)复制到已经制作好的USB启动盘中

            

            

               

         6.重启电脑按F12选择用U盘启动进入DOS,(有个usb选项的就是)执行如下命令:marker.exe /w:7u.bin /z
            ( 注意空格:斜杠之前各有一个空格。将命令行中的文件改成和你的slic2.1文件名称一样,在这里是本人的Slic2.1文件为7u.bin )
              执行速度快如闪电!
                      如果成功则显示“Programming Done!!!!”
                     “**** Success: Process completed (00) ****”等信息,

             有原生Slic2.0的用户,注意选择182 bytes的Slic2.1表(本人R400用的就是182 bytes的slic2.1表)。无Slic的用户,注意选择374 bytes的Slic2.1表。
             如果不确定有没有原生slic,无所谓,182 bytes的和374 bytes都试试吧,成功了的就是对的(如果选错了型号是不能marker的,没有风险)。
             
              重启计算机。恭喜你!

            

         7.用OEM版恢复光盘安装Windows 7吧!


      文章及图片来源于中关村论坛 联想ThinkPad论坛 特此说明!
      
            

明升88 2010-01-30 16:04 发表评论
]]>