2009-11-17 63 views
3

我最近有一個客戶報告我的應用程序和NVidia nView桌面管理器的問題。基本上nView似乎在顯示器之間移動應用程序時「隱藏」隱藏的輔助表單。我正在使用Delphi 2010進行測試。使用IDE也可以看到問題(顯示非停靠窗口,關閉它,然後選擇將Delphi IDE發送到不同的顯示器。)以前隱藏的窗體無響應狀態並且不能關閉。nVidia nView桌面管理器和Delphi應用程序的問題?

重現:

。使用NVidia nView桌面管理器的多顯示器系統。
。使用輔助表單啓動任何Delphi應用程序,這些應用程序在關閉時將被隱藏。
。顯示或ShowModal表單,然後關閉它(表單需要至少顯示一次)。
。選擇將應用程序發送到不同的顯示器。 (通過熱鍵或標題圖標)
。應用程序將移動到其他監視器,並且任何隱藏的表單都將可見。

有其他人看過這個問題嗎?我已經使用舊版本的nView進行了驗證,但每當他嘗試移動主窗體或調整其大小時,最新版本的客戶都會遇到問題。不幸的是,我的筆記本電腦無法更新到最新版本,所以我不能輕鬆測試它。

感謝您的任何意見或建議!

-Mark

+0

我已經完全設置。剛剛寫了一個小應用程序來做你所描述的,不幸的是,你的預期行爲沒有發生。當我將主窗體拖到第二臺顯示器時,它是唯一可見的。儘管使用Delphi 6。 NVIDIA nView桌面管理器v105.31。 –

+0

謝謝。你只是拖動應用程序?您需要使用nView命令「將其發送到其他監視器」來解決問題。 – MarkF

回答

1

我有同樣的問題。 Delphi應用程序停止響應沒有任何明顯的原因。從madExcept查看堆棧跟蹤,我可以看到應用程序在nview.dll中凍結。我找到的唯一「解決方案」是尋找nV​​iew,並建議用戶使用下面的代碼關閉它:

function CheckForNview: Boolean; 

    function IsNviewModuleRunning(AHandle: THandle; AProcessId: DWord): Boolean; 
    var 
    AModuleEntry: TModuleEntry32; 
    begin 
    AModuleEntry.dwSize := SizeOf(AModuleEntry); 
    AModuleEntry.th32ProcessID := AProcessId; 
    Result := False; 

    if Module32First(AHandle, AModuleEntry) then 
    begin 
     if SameStr(AModuleEntry.szModule, 'nview.dll') then 
     Result := True; 
     while Module32Next(AHandle, AModuleEntry) do 
     begin 
     if SameStr(AModuleEntry.szModule, 'nview.dll') then 
      Result := True; 
     end; 
    end; 
    end; 

var 
    AHandle: THandle; 
    AProcessEntry: TProcessEntry32; 
begin 
    Result := False; 
    AHandle := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); 
    if Process32First(AHandle, AProcessEntry) then 
    begin 
    if SameStr(AProcessEntry.szExeFile, ExtractFileName(ParamStr(0))) then 
     Result := Result or IsNviewModuleRunning(AHandle, AProcessEntry.th32ProcessID); 
    while Process32Next(AHandle, AProcessEntry) do 
    begin 
     if SameStr(AProcessEntry.szExeFile, ExtractFileName(ParamStr(0))) then 
     Result := Result or IsNviewModuleRunning(AHandle, AProcessEntry.th32ProcessID); 
    end; 
    end; 
+0

謝謝!我很想知道爲什麼它會導致問題。我一直希望有一些事情可以解決。 – MarkF

+0

也許是NVidia的一個錯誤報告? –

+0

Scott,同意100%。只是如果這隻影響Delphi應用程序,那麼我不確定他們是否會熱衷於修復它。我希望在走這條路線之前獲得更多信息。 – MarkF

相關問題