• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            共4頁: 1 2 3 4 
            @陳利敏
            可以用先用API Monitor 或者WinDbg的API斷點看看對方程序是如何工作的
            re: 消息發(fā)送雜談 Richard Wei 2016-05-11 12:18
            這里有意思的地方在于面對著一個com對象,你居然沒有辦法知道到它究竟實現(xiàn)了多少接口。微軟自己也也意識到了這個問題, 于是WinRT里就有了IInspectable::GetIids, https://msdn.microsoft.com/en-us/library/br205822(v=vs.85).aspx
            re: 挖坑,有空填坑 Richard Wei 2016-05-10 16:51
            歡迎回來...
            re: 如何抓取揚聲器的聲音 Richard Wei 2016-01-05 19:36
            @josanna
            不行就開線程吧,還不行可以嘗試提高線程的優(yōu)先級
            re: 客戶端技術(shù)的一點思考 Richard Wei 2015-12-11 15:35
            @游戲狗…
            這個需要DUILib庫的開發(fā)為每個控件實現(xiàn)IAccessible接口,自動測試再通過這個接口查詢和操作控件, 思路就那樣,手頭現(xiàn)成的Demo也我沒有.
            re: 客戶端技術(shù)的一點思考 Richard Wei 2015-12-11 14:17
            @謝應(yīng)彪
            要點我在這篇文章里都說了 http://www.shnenglu.com/weiym/archive/2014/11/15/208885.html

            我們的Windows Client就是基于開源的DUILib的, 有興趣可以試用下 zoom.us
            re: 客戶端技術(shù)的一點思考 Richard Wei 2015-09-18 21:24
            @春秋十二月
            是的,計算機技術(shù)的變化可以說很快,也可以說很慢。快的方面來說,各種新語言新技術(shù)新平臺層出不窮,好像三天兩頭在變;慢的方面來說,數(shù)據(jù)結(jié)構(gòu)和算法,語言范型,網(wǎng)絡(luò)協(xié)議,馮諾依曼體系結(jié)構(gòu)等幾十年來都很穩(wěn)定,練好內(nèi)功才能以靜制動。
            @longjoy
            按我上面說的做就可以了支持了,公司內(nèi)部代碼,外面應(yīng)該下載不到...
            @test
            看來確實是歷史原因, 不過對于運行期的程序來說,個人倒是更贊同Windows的做法,忽略內(nèi)存因素,Windows的UCS2編碼相對于其他平臺的UTF8更統(tǒng)一和高效。
            re: 基于WinDbg的內(nèi)存泄漏分析 Richard Wei 2015-01-12 16:38
            @lchen
            這個沒啥好方法, 感覺只能通過查看每個堆建立時的堆棧情況來判斷
            試了下, 貌似就是這樣的。實在不行就不要Destroy B了, 用Hide B替代吧
            @春秋十二月
            理解, 基礎(chǔ)庫大量用模板我也沒反對...
            哈哈, 我現(xiàn)在也比較趨向簡單的設(shè)計, 有時間玩模板的奇淫技巧, 還不如花時間解決幾個實際的問題。
            曾經(jīng)思考過C++的編程風(fēng)格: http://www.shnenglu.com/weiym/archive/2013/04/27/199781.html
            @bukebushuo
            不知道老弟的界面庫賣的怎么樣了。

            DUI支持讀屏我已經(jīng)做了, 就按我上面說的方法。
            實際上QQ的界面庫也是支持讀屏的,有興趣的話可以在win7/win8上嘗試 “控制面板\輕松使用\輕松使用設(shè)置中心\啟動講訴人”, 然后在QQ上通過Tab切換控件焦點。
            @duanyuncanyang
            memory pool 本身只負責(zé)內(nèi)存分配,是給對象的operate new 和operate delete調(diào)用的,具體參見上面的測試代碼
            re: 關(guān)于SEH的簡單總結(jié) Richard Wei 2014-09-22 13:18
            @cc
            本來就是, C++異常只能捕獲軟件異常, 硬件異常(如除零,空指針訪問)用操作系統(tǒng)的SEH捕獲。
            re: Windbg實用手冊 Richard Wei 2014-09-16 17:31
            有人提到中文中夾雜英文的問題,不多說了,在外企呆過的同學(xué)應(yīng)該都會不自覺地有這個習(xí)慣,并且有時候錯誤的中文還不如用原始的英文。
            @allen
            剛才有簡單測試了下, 測試代碼如下:
            D3DPRESENT_PARAMETERS ps = {0};
            ps.Windowed = TRUE;
            ps.SwapEffect = D3DSWAPEFFECT_DISCARD;
            ps.BackBufferFormat = D3DFMT_UNKNOWN;

            pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL
            , hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &ps, &g_pD3dDevice);
            if(g_pD3dDevice == NULL) break;


            LPDIRECT3DDEVICE9 pNewD3dDevice = NULL;
            pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL
            , hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &ps, &pNewD3dDevice);

            創(chuàng)建了2個IDirect3DDevice9對象, 然后分別打印它們的虛表指針和內(nèi)容:

            0:000> ?? g_pD3dDevice
            struct IDirect3DDevice9 * 0x02815c00
            +0x000 __VFN_table : 0x0281899c
            0:000> ?? pNewD3dDevice
            struct IDirect3DDevice9 * 0x0241bfe0
            +0x000 __VFN_table : 0x0241ed7c
            0:000> dps 0x0281899c
            0281899c 6fe56f19 d3d9!CBaseDevice::QueryInterface
            028189a0 6fe56992 d3d9!CBaseDevice::AddRef
            028189a4 6fe56969 d3d9!CBaseDevice::Release
            028189a8 6fe72587 d3d9!CBaseDevice::TestCooperativeLevel
            028189ac 6ff0c6ad d3d9!CBaseDevice::GetAvailableTextureMem
            028189b0 6ff49c8f d3d9!CD3DBase::EvictManagedResources
            028189b4 6fe6b1c5 d3d9!CBaseDevice::GetDirect3D
            028189b8 6fe56ff8 d3d9!CBaseDevice::GetDeviceCaps
            028189bc 6fe8d144 d3d9!CBaseDevice::GetDisplayMode
            028189c0 6fe7084e d3d9!CBaseDevice::GetCreationParameters
            028189c4 6ff0bb74 d3d9!CBaseDevice::SetCursorProperties
            028189c8 6ff0c04d d3d9!CBaseDevice::SetCursorPosition
            028189cc 6fe8def0 d3d9!CBaseDevice::ShowCursor
            028189d0 6fe6e9a0 d3d9!CBaseDevice::CreateAdditionalSwapChain
            028189d4 6fe69ac7 d3d9!CBaseDevice::GetSwapChain
            028189d8 6fe993ca d3d9!CBaseDevice::GetNumberOfSwapChains
            028189dc 6feaf251 d3d9!CBaseDevice::Reset
            028189e0 6fe9a064 d3d9!CBaseDevice::Present
            028189e4 6feb1418 d3d9!CBaseDevice::GetBackBuffer
            028189e8 6fe6bfe9 d3d9!CBaseDevice::GetRasterStatus
            028189ec 6ff0c139 d3d9!CBaseDevice::SetDialogBoxMode
            028189f0 6ff0c3bf d3d9!CBaseDevice::SetGammaRamp
            028189f4 6ff0c4fd d3d9!CBaseDevice::GetGammaRamp
            028189f8 6fe85ddb d3d9!CBaseDevice::CreateTexture
            028189fc 6ff0ca68 d3d9!CBaseDevice::CreateVolumeTexture
            02818a00 6feacb2d d3d9!CBaseDevice::CreateCubeTexture
            02818a04 6fe72d69 d3d9!CBaseDevice::CreateVertexBuffer
            02818a08 6fe732e6 d3d9!CBaseDevice::CreateIndexBuffer
            02818a0c 6fea0127 d3d9!CBaseDevice::CreateRenderTarget
            02818a10 6ff0cd88 d3d9!CBaseDevice::CreateDepthStencilSurface
            02818a14 6ff0e0e0 d3d9!CBaseDevice::UpdateSurface
            02818a18 6fe846ab d3d9!CBaseDevice::UpdateTexture
            0:000> dps 0x0241ed7c
            0241ed7c 6fe56f19 d3d9!CBaseDevice::QueryInterface
            0241ed80 6fe56992 d3d9!CBaseDevice::AddRef
            0241ed84 6fe56969 d3d9!CBaseDevice::Release
            0241ed88 6fe72587 d3d9!CBaseDevice::TestCooperativeLevel
            0241ed8c 6ff0c6ad d3d9!CBaseDevice::GetAvailableTextureMem
            0241ed90 6ff49c8f d3d9!CD3DBase::EvictManagedResources
            0241ed94 6fe6b1c5 d3d9!CBaseDevice::GetDirect3D
            0241ed98 6fe56ff8 d3d9!CBaseDevice::GetDeviceCaps
            0241ed9c 6fe8d144 d3d9!CBaseDevice::GetDisplayMode
            0241eda0 6fe7084e d3d9!CBaseDevice::GetCreationParameters
            0241eda4 6ff0bb74 d3d9!CBaseDevice::SetCursorProperties
            0241eda8 6ff0c04d d3d9!CBaseDevice::SetCursorPosition
            0241edac 6fe8def0 d3d9!CBaseDevice::ShowCursor
            0241edb0 6fe6e9a0 d3d9!CBaseDevice::CreateAdditionalSwapChain
            0241edb4 6fe69ac7 d3d9!CBaseDevice::GetSwapChain
            0241edb8 6fe993ca d3d9!CBaseDevice::GetNumberOfSwapChains
            0241edbc 6feaf251 d3d9!CBaseDevice::Reset
            0241edc0 6fe9a064 d3d9!CBaseDevice::Present
            0241edc4 6feb1418 d3d9!CBaseDevice::GetBackBuffer
            0241edc8 6fe6bfe9 d3d9!CBaseDevice::GetRasterStatus
            0241edcc 6ff0c139 d3d9!CBaseDevice::SetDialogBoxMode
            0241edd0 6ff0c3bf d3d9!CBaseDevice::SetGammaRamp
            0241edd4 6ff0c4fd d3d9!CBaseDevice::GetGammaRamp
            0241edd8 6fe85ddb d3d9!CBaseDevice::CreateTexture
            0241eddc 6ff0ca68 d3d9!CBaseDevice::CreateVolumeTexture
            0241ede0 6feacb2d d3d9!CBaseDevice::CreateCubeTexture
            0241ede4 6fe72d69 d3d9!CBaseDevice::CreateVertexBuffer
            0241ede8 6fe732e6 d3d9!CBaseDevice::CreateIndexBuffer
            0241edec 6fea0127 d3d9!CBaseDevice::CreateRenderTarget
            0241edf0 6ff0cd88 d3d9!CBaseDevice::CreateDepthStencilSurface
            0241edf4 6ff0e0e0 d3d9!CBaseDevice::UpdateSurface
            0241edf8 6fe846ab d3d9!CBaseDevice::UpdateTexture

            可以看到g_pD3dDevice的虛表地址是0x0281899c, pNewD3dDevice的虛表地址是0x0241ed7c,他們各自擁有自己虛表,盡管虛表里的內(nèi)容是一樣。如果你改變第一個對象的虛表內(nèi)容,理論上不會影響第二個對象。
            @WXX
            慚愧,真心熱愛計算機的大學(xué)畢業(yè)時就很厲害了, 昨天看到的 http://www.zhihu.com/question/23241706/answer/24087891

            我是大學(xué)沒努力,工作后根據(jù)需要補學(xué)而已。
            @Won
            確實,DWM虛擬化只有在大于125%時才會自動開啟
            @allen
            BitBlt主要針對Monitor DC, 抓某個Monitor的屏幕內(nèi)容
            WindowDC可以抓任何一個窗口的內(nèi)容, 當(dāng)然抓時也要BitBlt
            re: 基于WinDbg的內(nèi)存泄漏分析 Richard Wei 2014-02-08 12:22
            @jenics
            是不是因為你的程序是沒有PDB文件的Release版
            @allen
            嗯, 單看這句話確實是錯的, 但是你要結(jié)合我的上下文來看。
            我的意思是你這里修改IDirect3DDevice9的虛表內(nèi)容, 修改的也僅是你當(dāng)前對象的, 而不會影響其他IDirect3DDevice9對象, 因為他們不是所有對象共享同一虛表的, 但是同一標(biāo)準(zhǔn)C++類的所有對象會共享同一虛表。
            re: Window Ghosting Richard Wei 2014-01-09 10:24
            @萬連文
            對假死窗口調(diào)用SendMessage應(yīng)該會一直等待,不會返回, 直到窗口有響應(yīng)
            @Q
            多謝指正, 因為具體我也沒試過, 只是看微軟文檔得出的結(jié)論,可看這里第一句:http://msdn.microsoft.com/en-us/library/windows/desktop/hh404487(v=vs.85).aspx
            @萬連文
            RDP協(xié)議是不公開的,他主要定義了圖像的壓縮,加密,傳輸和遠程控制等方法, 本身沒有定義屏幕采樣方法,微軟的遠程桌面用的應(yīng)該是mirror driver的抓屏。
            effective C++ item 38
            re: 關(guān)于 "Context" 模式 Richard Wei 2013-11-23 14:11
            @萬連文
            嗯,確實度是關(guān)鍵, 實際上怎樣才算一個模塊? 它的粒度可以是個小的靜態(tài)Library, 也可能是個龐大的Service。最關(guān)鍵的就是要保持模塊的獨立性和層次性,避免形成網(wǎng)狀依賴。
            @春秋十二月
            同意,相對Unix/Linux的穩(wěn)定, Windows開發(fā)要累得多
            @StarsunYzL
            已經(jīng)加上, 如有不正確的地方,歡迎指正.
            re: 遠程線程入門 Richard Wei 2013-10-24 19:45
            @flighta
            如果別人已經(jīng)保存了你這個DLL的HINSTANCE,你想熱替換它,這個恐怕不好弄, 只能讓別人Free后再Load。
            re: 共享個人寫的一個截屏小工具 Richard Wei 2013-10-12 17:52
            @唐地坤
            關(guān)鍵就是參數(shù)CAPTUREBLT, 它讓BitBlt把Layered Window抓下來
            re: 共享個人寫的一個截屏小工具 Richard Wei 2013-10-12 13:20
            @唐地坤
            不是很明白你的問題,不知道你是不是指這個BitBlt( ... SRCCPY | CAPTUREBLT)
            re: 關(guān)于Windows窗口框架 Richard Wei 2013-09-09 18:34
            @聶晏冰

            怎么取一次?
            每次收到消息都要轉(zhuǎn)的, 大概代碼如下:
            LRESULT CALLBACK XWindow::WndProc(HWND hWnd, UINT uMsg,
            WPARAM wParam, LPARAM lParam)
            {
            XWindow* pThis = NULL;
            if (WM_NCCREATE == uMsg)
            {
            assert(!::IsBadReadPtr((void*)lParam, sizeof(CREATESTRUCT)));
            LPCREATESTRUCT lpcs = reinterpret_cast(lParam);
            pThis = static_cast(lpcs->lpCreateParams);
            pThis->m_hWnd = hWnd;

            assert(!::IsBadReadPtr(pThis, sizeof(XWindow)));
            ::SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast(pThis));
            }
            else
            pThis = reinterpret_cast(::GetWindowLongPtr(hWnd, GWLP_USERDATA));

            if (pThis)
            return pThis->MsgProc(hWnd, uMsg, wParam, lParam);
            else
            return DefWindowProc(hWnd, uMsg, wParam, lParam);
            }
            re: 關(guān)于Windows窗口框架 Richard Wei 2013-09-09 08:52
            @jilei
            不錯, UserData方式也可以用SetProp存儲, 但是低效同樣也是它的缺點。
            re: 關(guān)于Windows窗口框架 Richard Wei 2013-09-08 19:16
            @avlee
            嗯,關(guān)鍵我們希望是面向?qū)ο蟮模?方便的支持多實例, 并且希望是線程安全的,這個框架都很好的滿足了。消息處理是窗口程序的根本, 所以簡單方便的消息映射也很重要。
            記錄下, 對于菜單窗口, 可以優(yōu)化消息WM_MOUSEACTIVATE, 返回MA_NOACTIVATE
            @bukebushuo
            不敢,最近工作中用到這塊東西,所以花點時間總結(jié)了下,順便分享
            re: 如何獲取桌面截圖 Richard Wei 2013-09-02 17:52
            @笨笨熊
            基本不可能, 這個用戶體驗也太差了吧
            @foundwant
            確實, 這和分配策略有關(guān)。
            上面的內(nèi)存池適合頻繁的分配和釋放的情況, 但是對于多次連續(xù)分配就不適合了。其他一些內(nèi)存池可參考:http://www.shnenglu.com/weiym/archive/2013/04/08/199238.html
            re: 理解程序內(nèi)存 Richard Wei 2013-07-26 15:45
            @艾絲凡
            恩,文章主要針對C++開發(fā)人員的, 沒有這方面經(jīng)驗是比較難看懂。
            re: COM思想的背后 Richard Wei 2013-07-20 17:52
            @WXX
            同意, 關(guān)于套間、列集/散集, 內(nèi)部涉及到LPC/RPC技術(shù),微軟隱藏了太多東西,盡管Windows操作系統(tǒng)本身用了不少這方面的技術(shù), 但是外部開發(fā)人員卻因為不好掌控而盡量不用。
            re: XP之后Windows的一些變化 Richard Wei 2013-07-20 11:57
            @bukebushuo
            確實, 關(guān)于Windows桌面應(yīng)用的下降趨勢, 我以前有過一篇文章http://www.shnenglu.com/weiym/archive/2012/06/21/179645.html
            re: 智能指針與庫 Richard Wei 2013-06-23 20:18
            @cao
            慚愧,不敢誤人子弟。
            re: 5年編程之旅 Richard Wei 2013-06-18 09:28
            還很年輕,加油
            這不是偶的文章嗎,被斬頭去尾了...
            rpc
            re: 關(guān)于&ldquo;UI線程&rdquo; Richard Wei 2013-05-06 15:11
            說的不錯。其實什么線程都一樣, 這里多了個消息隊列和消息循環(huán),就被叫為 “UI線程”。
            共4頁: 1 2 3 4 
            国产精品99久久久精品无码| 国产精品久久新婚兰兰| 亚洲中文字幕无码久久2020 | 国产高潮国产高潮久久久91 | 人妻系列无码专区久久五月天| 国产精品女同久久久久电影院| 久久精品中文字幕一区| 久久人人爽人人爽人人片AV不 | 国产成人久久激情91| 久久亚洲春色中文字幕久久久| 久久婷婷五月综合色奶水99啪| 亚洲AV日韩精品久久久久久| 久久AV高潮AV无码AV| 久久精品国产亚洲AV香蕉| 亚洲色婷婷综合久久| 久久精品中文字幕无码绿巨人| 国产精品99久久免费观看| 国产91色综合久久免费| 99久久国产综合精品网成人影院 | 99久久免费只有精品国产| 精品一久久香蕉国产线看播放| 久久天天躁狠狠躁夜夜不卡| 久久久高清免费视频| 久久久久亚洲AV片无码下载蜜桃| 久久精品国产网红主播| 亚洲午夜精品久久久久久人妖| 久久夜色精品国产亚洲av| 久久精品成人欧美大片| 国产69精品久久久久777| 久久综合狠狠综合久久97色| 少妇人妻88久久中文字幕| 久久久国产精品福利免费 | 狠狠色婷婷综合天天久久丁香| 国产无套内射久久久国产| 久久久久亚洲精品日久生情| 国产精品久久久久久福利漫画| 人妻无码精品久久亚瑟影视| 99久久99久久精品免费看蜜桃| 性做久久久久久免费观看| 成人妇女免费播放久久久| 亚洲午夜精品久久久久久app|