ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 15:24

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 9 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2005年5月30日(月) 21:49 
一生懸命動いてるプログラムを、強制終了したくなる時があります。Xマークを押すと「このプログラムは応答していません」と
出てきますが、サクッと強制終了させる為の、お約束のコーディ
ングをご教示頂きたく。

Win XP Pro+AB3


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年5月30日(月) 21:49 
[Ctrl]+[Alt]+[Del]キーを押した後、プロセスの中にある自作プログラム名(プロジェクト名.exe)を「プロセスの終了」すればできます。
Windowsの基本的操作を一巡で覚えてる時にあるので覚えといたほうがいいです


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年5月30日(月) 21:50 
コメントありがとうございました。私の設問の仕方が悪かったようで
すね。ウインドウの右上のX印をクリックすると、後腐れなく終了して
くれるようなコーディングがあるのではないかな?という事でした。
ループの中にトラップを入れて等々

ちなみに左手が動かせないので3つ同時のキーダウンは、最初から
諦めてました(^_^;


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年5月30日(月) 21:50 
> コメントありがとうございました。私の設問の仕方が悪かったようで
> すね。ウインドウの右上のX印をクリックすると、後腐れなく終了して
> くれるようなコーディングがあるのではないかな?という事でした。
> ループの中にトラップを入れて等々
 そもそも、「このプログラムは応答していません」と出るのはプログラムの動作ではなく、
Windowsの動作ですので、プログラム自体でどうかするものではないです。
よって、そのようなコーディング方法はない、というのが答えとなります。
 タスクマネージャのように、動いているプロセスを他のソフトから
強制終了させるという場合はまた話が違ってきますが。
 
それとは別に、
 
>サクッと強制終了させる為の、お約束のコーディングをご教示頂きたく。
 揚げ足となってしまいますが、このように「何かあるんだろ?教えろよ」
的な書き方をしては協力的な回答は得られないと思います。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年5月30日(月) 21:50 
> ウインドウの右上のX印をクリックすると、後腐れなく終了して
> くれるようなコーディングがあるのではないかな?という事でした。

通常、[×]をクリックしたら後腐れなく終了するはずです。

[×]を押した時に「このプログラムは応答していません」と出てくるならば、どこかに必要以上の負荷をかけているとか、終了処理など、プログラムに間違いがあるのではないでしょうか。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年5月30日(月) 21:51 
こんばんは、広田です。
私も昔に経験した事があります。
原因は通行人様のおっしゃるように、プログラムのミス(処置の甘さ)でした。
実行中の何かがあるのでしょうね。
実行中のものは、Sub MainWnd_Destroy()で閉じられる前に、
終了させておかなければいけません。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年5月30日(月) 21:51 
やっぱり僕が書いた方法ではないと無理みたいですね
あと、広田さんのとおりプログラムに終了命令を渡せる状態にしないと、解決しない形になっちゃいますね
それに、誰でもコーディングミスでこういう形になることもよくありますから、自分でどこがバグなのかを考えるしかないと思いますね


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年5月31日(火) 00:16 
>  そもそも、「このプログラムは応答していません」と出るのはプログラムの動作ではなく、
> Windowsの動作ですので、プログラム自体でどうかするものではないです。
> よって、そのようなコーディング方法はない、というのが答えとなります。

皆様コメントありがとうございます。「こんな事知らないのは私だけで、皆さんご存知だろうな」という思いからでしたが、お気を損ねてしまったのならお詫び致します。落ち着いてソースを確認します。


通報する
ページトップ
   
投稿記事Posted: 2005年6月05日(日) 18:39 
皆さん、こんにちは。

まとまった量のデータ処理をしている途中のプログラムを、古のBREAKキーを押して強制終了させる如く、ウィンドウ右上のXマークを押しても「反応してません」と出てくるのが気に入らず、懊悩してました。
皆さんにアドバイスを頂き、「オフィシャルユーザーズガイド」の「マルチスレッド」の真似で、落ち着きました。

アドバイスありがとうございました。

-----------------------------
Dim status As long
Dim hThread As DWord

Function MainWndProc(hWnd As DWord, dwMsg As DWord, wParam As DWord, lParam As DWord) As DWord
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function

Sub MainWnd_Destroy()
loop_DestroyObjects()
PostQuitMessage(0)
End Sub

Function DDD(hWnd As DWord) As DWord
Dim i As DWord
Dim hDC As DWord
Dim buffer0 As String
i=0
Do
SetWindowText(GetDlgItem(hMainWnd,Static1),Str$(i))
i=i+1
If i>100 Then
i=0
End If
if status=0 Then
Exit Do
End If
sleep(100)
Loop
ReleaseDC(hWnd,hDC)
CloseHandle(hThread)
End Function

Sub MainWnd_CommandButton1_Click()
Dim dwDummy As DWord
If status=0 Then
status=1
SetDlgItemText(hMainWnd,CommandButton1,"Stop")
hThread=CreateThread(ByVal 0,0,AddressOf(DDD),_
GetDlgItem(hMainWnd,Static1),0,VarPtr(dwDummy))
Else
status=0
SetDlgItemText(hMainWnd,CommandButton1,"Start")
End If
End Sub


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 9 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Ahrefs [Bot], Semrush [Bot] & ゲスト[8人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean