終了時アプリケーションエラーが出ます。
「メモリーがread・・・」理由がわかりません。
デバック方法を教えてください。
終了時アプリケーションエラーが出ます。
Re: 終了時アプリケーションエラーが出ます。
アクセス違反か何かを起こしているのだと思いますが、ソースコードがないので何ともいえません。
問題のコードを提示していただければ、解決方法がわかるかもしれません。
問題のコードを提示していただければ、解決方法がわかるかもしれません。
[hira]
http://hira.hopto.org/
http://hira.hopto.org/
ABのバージョンが4になって以降私も同じ症状に悩まされています。
以前バグ報告板に投稿したのですが無しのつぶてだったので、
このような症状になるのは私の環境だけだと思いあきらめていました。
いろいろ調べてみましたが、
デバッグ実行時RegistWindowEx関数で登録、生成したウィンドウクラスにWM_DESTROYが投げられてきたときに
PostQuitMessage関数を呼び出す、またはそれ以外の処理の有無にかかわらず
ウィンドウ関数を抜けるとアクセス違反が起きるようです。
これらの症状はデバック実行で起き、
リリースコンパイルでは正常に終了します。
アクセス違反が必ず起きるコードを下に載せましたので、
バグの修正のほどをよろしくお願いします。
開発環境
Windows XP Home Edition Version2002 Service Pack 2
Internet Explorer 6.0 SP2
AB Version 4以降
以前バグ報告板に投稿したのですが無しのつぶてだったので、
このような症状になるのは私の環境だけだと思いあきらめていました。
いろいろ調べてみましたが、
デバッグ実行時RegistWindowEx関数で登録、生成したウィンドウクラスにWM_DESTROYが投げられてきたときに
PostQuitMessage関数を呼び出す、またはそれ以外の処理の有無にかかわらず
ウィンドウ関数を抜けるとアクセス違反が起きるようです。
これらの症状はデバック実行で起き、
リリースコンパイルでは正常に終了します。
アクセス違反が必ず起きるコードを下に載せましたので、
バグの修正のほどをよろしくお願いします。
開発環境
Windows XP Home Edition Version2002 Service Pack 2
Internet Explorer 6.0 SP2
AB Version 4以降
コード: 全て選択
Dim hMainWnd As HWND
Dim hChildWnd As HWND
Function WndProc(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Select Case message
Case WM_CREATE
Dim pCS As *CREATESTRUCT
pCS = lParam As *CREATESTRUCT
hChildWnd = CreateWindowEx(0,
"CHILD",
"CHILD",
WS_OVERLAPPEDWINDOW or WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
320,
240,
hWnd,
0,
pCS->hInstance,
NULL)
Case WM_DESTROY
PostQuitMessage(0) 'ここでアクセス違反
MsgBox 0, "WM_DESTROY"
WndProc = 0
Case Else
WndProc = DefWindowProc(hWnd, message, wParam, lParam)
End Select
End Function
Function ChildProc(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
'子ウィンドウでもアクセス違反
ChildProc = DefWindowProc(hWnd, message, wParam, lParam)
End Function
Dim wc As WNDCLASSEX
FillMemory(VarPtr(wc), Len(wc), 0)
With wc
.cbSize = SizeOf(WNDCLASSEX)
.hInstance = GetModuleHandle(0)
.style = CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS
.hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW))
.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION))
.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE(IDI_WINLOGO))
.lpszClassName = "PARENT"
.lpfnWndProc = AddressOf(WndProc)
.hbrBackground = (COLOR_3DFACE+1)
End With
RegisterClassEx(wc)
wc.lpszClassName = "CHILD"
wc.lpfnWndProc = AddressOf(ChildProc)
RegisterClassEx(wc)
RegisterClassEx(wc)
hMainWnd = CreateWindowEx(0,
"PARENT",
"PARENT",
WS_OVERLAPPEDWINDOW or WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
640,
480,
0,
0,
GetModuleHandle(0),
0)
Dim msgMain As MSG, iResult As Long
Do
iResult=GetMessage(msgMain, 0, 0, 0)
If iResult = 0 or iResult = -1 Then
MsgBox 0, "test" 'ここには来ない
Exit Do
End if
TranslateMessage(msgMain)
DispatchMessage(msgMain)
Loop
End
追伸
私の環境ではいくつかの不要と思われるサービスを無効にし、また新たにサービスを追加しています。
自動、手動で起動するサービスをすべて挙げました。
症状とは関係ないかもしれませんが、ご参考になれば幸いです。
スタートアップの種類・自動
AVG7 Alert Manager Server
AVG7 Update Service
Cryptographic Services
DCOM Server Process Launcher
DHCP Client
DNS Client
Event Log
Outpost Firewall Service
Plug and Play
Print Spooler
Protected Storage
Remote Procedure Call(RPC)
Shell Hardware Detection
System Event Notification
System Restore Service
Themes
Windows Audio
Windows Management Instrumentation
Windows Time
Windows User Mode Driver Framework
スタートアップの種類・手動
Application Management
IPSEC Services
Logical Disk Manager
Logical Disk Manager Administrative Service
Network Connections
Remote Access Connection Manager
Volume Shadow Copy
WebClient
Windows Installer
自動、手動で起動するサービスをすべて挙げました。
症状とは関係ないかもしれませんが、ご参考になれば幸いです。
スタートアップの種類・自動
AVG7 Alert Manager Server
AVG7 Update Service
Cryptographic Services
DCOM Server Process Launcher
DHCP Client
DNS Client
Event Log
Outpost Firewall Service
Plug and Play
Print Spooler
Protected Storage
Remote Procedure Call(RPC)
Shell Hardware Detection
System Event Notification
System Restore Service
Themes
Windows Audio
Windows Management Instrumentation
Windows Time
Windows User Mode Driver Framework
スタートアップの種類・手動
Application Management
IPSEC Services
Logical Disk Manager
Logical Disk Manager Administrative Service
Network Connections
Remote Access Connection Manager
Volume Shadow Copy
WebClient
Windows Installer
マティさんの
>※2.メッセージをフックするような常駐プログラム等を使用していませんか?
で、代替シェル(LiteStep)を使っていることを思い出しました。
Ver3系のときはいたって正常に動いていましたし、
そもそも、あまりにもこの環境に慣れすぎていたので存在自体を忘れていました。
Explorerシェルなユーザーでログインしデバッグ実行してみると、なんのエラーも無く終了できました。
いやー、馬鹿すぎだ。
他のメッセージフックしていそうなアンチウィルスソフトやファイヤーウォールはExplorerシェルのユーザーでも起動しているので、
結論としてはLiteStepのような代替シェルが原因のようです。
森さんも代替シェルの環境でプログラミングしていませんか?
>※2.メッセージをフックするような常駐プログラム等を使用していませんか?
で、代替シェル(LiteStep)を使っていることを思い出しました。
Ver3系のときはいたって正常に動いていましたし、
そもそも、あまりにもこの環境に慣れすぎていたので存在自体を忘れていました。
Explorerシェルなユーザーでログインしデバッグ実行してみると、なんのエラーも無く終了できました。
いやー、馬鹿すぎだ。
他のメッセージフックしていそうなアンチウィルスソフトやファイヤーウォールはExplorerシェルのユーザーでも起動しているので、
結論としてはLiteStepのような代替シェルが原因のようです。
森さんも代替シェルの環境でプログラミングしていませんか?
代償シェル+エラーって言えば
関係ないと思いますが、僕も昔bbLeanっていう代償シェル突っ込んでいた時にたまにエラー起きてました。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。