2011年10月25日火曜日

Explorerが落ちてしまったときの起動方法

会社PCで、Explorerが落ちてしまったことがある。もうマウスでタスクバーから選択して仕事できない状態だった。

そのとき行った元に戻す方法を記す。

1.タスクマネージャを起動する。[Ctrl + Shift + Esc]キーを同時押し。
2.タスクマネージャの「ファイル」-「新しいタスクの実行」を押下する。




3.「新しいタスクの作成」画面の「参照」ボタンを押下する。


4.「ファイルの参照」画面が表示されるので、「C:\Windows」ディレクトリに移動し、「explorer.exe」を選択し、「開く」ボタンを押下する。

5.「新しいタスク作成」画面に戻るので、「OK」ボタンを押下する。

以上で、タスクバーからマウスでExcelとか選択できるようになり、仕事が再開できる。

Windows XPとかだと、explorer.exeの場所が違うと思う。System32ディレクトリとかにあるかも。

2011年10月19日水曜日

Erlang Dialog setLabel サンプル Sample


タイトルにある通りのサンプル。
Dialogの生成でタイトルを"Target Display"に設定しているが、setLabelで"setLabel"に再設定している。

表示される画面の左上が"setLabel"になっているはず。

ソース:

-module(dialogSetLabel).
-export([start/0]).
%%-export([new/2]). %% API
-include_lib("wx.hrl").

start()->
    Wx = wx:new(),
    Dialog = wx:batch(fun()->new(Wx, 100) end),
    wxWindow:show(Dialog),
    loop(Dialog).

new(Parent,Id)->
    Option = [ { size, {210, 100} } ],
    Head = "Target Display",
    Dialog = wxDialog:new(Parent, Id, Head, Option),
    wxDialog:setLabel(Dialog, "setLabel"),
    wxDialog:connect(Dialog, close_window),

    Dialog.

loop(Dialog)->
    receive
         %% Closeボタン押下時
        #wx{obj = Obj, event = #wxClose{}}->
            io:format("~p Closing window ~n", [self()]),
            wxWindow:destroy(Obj)
    end.

2011年10月18日火曜日

Erlang left click wxMouseEvent Sample サンプル

マウスの左クリックで、画面のテキスト文字列を再設定させるサンプルを書いた。

動作例:


eSample130.erlを実行すると、command Test画面が表示される。

show Windowボタンを押下すると、Target Display画面が表示される。

Target Display画面上の文字列上のテキストを左クリックすると、「Left Click! ~」が画面上に表示される。

下記にソースを表示する。
ダウンロードは以下から。
eSample130.erl:
https://docs.google.com/leaf?id=0B8Fi1kuQJgFrNmE1Yjc3MTYtYjMxOS00NzQyLWI0OTItMWM5NzAyNzU3NWJl&hl=ja

eSample130_1.erl(更新前):
https://docs.google.com/leaf?id=0B8Fi1kuQJgFrYzM4MGE4ZGUtMTU2NS00NzkzLWI4YjYtZGUyMTdlZmM1NTlj&hl=ja

eSample130_1.erl(更新後):
https://docs.google.com/leaf?id=0B8Fi1kuQJgFrYjJkYWI5NDgtNzBkMS00ZWUyLWI0M2YtYzA3ZWYzZjRlNGYx&hl=ja

ソース:

-module(eSample130).
-export([start/0]).
-include_lib("wx.hrl").
-define(wxIDButton, 10).

start()->
    Wx = wx:new(),
    {Frame, Pid} = wx:batch(fun()->create_window(Wx) end),
    wxWindow:show(Frame),
    loop(Pid),
    ok.
%% 画面を表示
create_window(Wx)->
    Option = [ { size, {310, 150 } } ],
    Str = "command Test.",
    Frame = wxFrame:new(Wx,
                        ?wxID_ANY,
                        Str,
                        Option),
    % Set Button On Frame
    %PnlOp = [ {pos, {120, 10}}, {size, {50, 10}}],
    BtnOp = [ {label, "show Window"} ],
    Panel = wxPanel:new(Frame, 120, 10, 50, 10),
    Button = wxButton:new(Panel, ?wxIDButton, BtnOp),
    % Create Status Bar
    wxFrame:createStatusBar(Frame, []),
    wxFrame:setStatusText(Frame, Str),

    %% Dialog生成
    Pid = spawn_link(fun() -> eSample130_1:start() end),

    %% イベントを登録
    wxFrame:connect( Frame, close_window ),%% Closeボタン
    wxButton:connect(Button, command_button_clicked),%% show Windowボタン

    {Frame, Pid}.

loop(Pid)->
    receive
        %% Closeボタン押下時
        #wx{obj = Obj, event = #wxClose{}}->
            io:format("~p Closing window ~n", [self()]),
            wxWindow:destroy(Obj);
        %% ボタン押下時
        #wx{ event = #wxCommand{} } ->
            Pid ! {visible, self()},
            io:format(" Clicked Button ~n"),
            loop(Pid);
        %% Dialogからのメッセージがあった時
        {reply, ok}->
            loop(Pid)
    end.

===============================//================================


-module(eSample130_1).
-export([start/0]).
%%-export([new/2]). %% API
-include_lib("wx.hrl").

start()->
    Wx = wx:new(),
    Dialog = wx:batch(fun()->new(Wx, 100) end),
    loop(Dialog).

new(Parent,Id)->
    Option = [ { size, {210, 100} } ],
    Head = "Target Display",
    Dialog = wxDialog:new(Parent, Id, Head, Option),

    %OPP = [{size,{100,50}}],
    %Panel = wxPanel:new(Parent,OPP),

    Str = "Push close Button.",
    OPST1 = [{pos, {50,10}}],
    ST = wxStaticText:new( Dialog, 1 , Str, OPST1),
    %ST = wxStaticText:new( Panel, 1 , Str, OPST1),

    wxDialog:connect(Dialog, close_window),
    %wxStaticText:connect(ST, left_down),
    wxDialog:connect(Dialog, left_down),
    wxDialog:connect(Dialog, left_up),
    wxDialog:connect(Dialog, middle_down),
    wxDialog:connect(Dialog, middle_up),
    wxDialog:connect(Dialog, right_down),
    wxDialog:connect(Dialog, right_up),
    wxDialog:connect(Dialog, motion),
    wxDialog:connect(Dialog, enter_window),
    wxDialog:connect(Dialog, leave_window),
    wxDialog:connect(Dialog, left_dclick),
    wxDialog:connect(Dialog, middle_dclick),
    wxDialog:connect(Dialog, right_dclick),
    wxDialog:connect(Dialog, mousewheel),
    wxDialog:connect(Dialog, nc_left_down),
    wxDialog:connect(Dialog, nc_left_up),
    wxDialog:connect(Dialog, nc_middle_down),
    wxDialog:connect(Dialog, nc_middle_up),
    wxDialog:connect(Dialog, nc_right_down),
    wxDialog:connect(Dialog, nc_right_up),
    wxDialog:connect(Dialog, nc_motion),
    wxDialog:connect(Dialog, nc_enter_window),
    wxDialog:connect(Dialog, nc_leave_window),
    wxDialog:connect(Dialog, nc_left_dclick),
    wxDialog:connect(Dialog, nc_middle_dclick),
    wxDialog:connect(Dialog, nc_right_dclick),


    Dialog.

%% 閉じるボタン押下時の動作
loop(Dialog)->
    receive
        %% closeボタン押下時
        #wx{event = #wxClose{ type = close_window }}->
            wxDialog:show(Dialog, [{show, false}]),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = left_down}}->
            wxDialog:setLabel(Obj, "left_down!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = left_up}}->
            wxDialog:setLabel(Obj, "left_up!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = middle_down}}->
            wxDialog:setLabel(Obj, "middle_down!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = middle_up}}->
            wxDialog:setLabel(Obj, "middle_up!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = right_down}}->
            wxDialog:setLabel(Obj, "right_down!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = right_up}}->
            wxDialog:setLabel(Obj, "right_up!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = motion}}->
            wxDialog:setLabel(Obj, "motion!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = enter_window}}->
            wxDialog:setLabel(Obj, "enter_window!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = leave_window}}->
            wxDialog:setLabel(Obj, "leave_window!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = left_dclick}}->
            wxDialog:setLabel(Obj, "left_dclick!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = middle_dclick}}->
            wxDialog:setLabel(Obj, "middle_dclick!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = right_dclick}}->
            wxDialog:setLabel(Obj, "right_dclick!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = mousewheel}}->
            wxDialog:setLabel(Obj, "mousewheel!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_left_down}}->
            wxDialog:setLabel(Obj, "nc_left_down!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_left_up}}->
            wxDialog:setLabel(Obj, "nc_left_up!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_middle_down}}->
            wxDialog:setLabel(Obj, "nc_middle_down!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_middle_up}}->
            wxDialog:setLabel(Obj, "nc_middle_up!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_right_down}}->
            wxDialog:setLabel(Obj, "nc_right_down!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_right_up}}->
            wxDialog:setLabel(Obj, "nc_right_up!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_motion}}->
            wxDialog:setLabel(Obj, "nc_motion!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_enter_window}}->
            wxDialog:setLabel(Obj, "nc_enter_window!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_leave_window}}->
            wxDialog:setLabel(Obj, "nc_leave_window!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_left_dclick}}->
            wxDialog:setLabel(Obj, "nc_left_dclick!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_middle_dclick}}->
            wxDialog:setLabel(Obj, "nc_middle_dclick!"),
            loop(Dialog);
        #wx{obj = Obj, event = #wxMouse{ type = nc_right_dclick}}->
            wxDialog:setLabel(Obj, "nc_right_dclick!"),
            loop(Dialog);
        %% 他ウィンドウのボタンが押下された時
        {visible, _From} ->
            %% Dialogを表示する
            wxDialog:show(Dialog, [{show, true}]),
            _From ! {reply, ok},
            loop(Dialog)
    end.

ncがいったい何を指しているのかわからない。



2011年10月16日日曜日

Erlang wxDialog showメソッド 表示/非表示

Java逆引き大全500の極意
http://goo.gl/JBiP9

上記Java本のサンプル129の「フレームウィンドウの表示/非表示を切り替える」というページをErlangで記述してみた。その表示例とソースを以下に掲載する。

表示例:


本サンプルの実行手順は以下。
1.setVisible.erlをコンパイルする。[c(setVisible).]
2.setVisible2.erlをコンパイルする。[c(setVisible2).]
3.[setVisible:start().]を実行すると、setVisible Test.画面(後ろの画面)が表示される。
4.[show Window]ボタンを押下すると、Target Display画面が表示される。
5.Target Display画面の×ボタンを押下すると、Target Display画面が非表示される。
6.setVisible Test.画面の×ボタンを押下すると、setVisible Test.画面が閉じる。

ソース:
setVisible.erl:https://docs.google.com/leaf?id=0B8Fi1kuQJgFrZmJjNzRlY2ItMWJkMC00NTljLWI5NTktYjBhMGFiN2Q4YTE3&hl=ja

setVisible2.erl:https://docs.google.com/leaf?id=0B8Fi1kuQJgFrYTIxMDk0MGYtMWE0ZS00YmI4LWIzMWYtNDUzNTkwY2VlOWZk&hl=ja

setVisible.erl:

-module(setVisible).
-export([start/0]).
-include_lib("wx.hrl").
-define(wxIDButton, 10).

start()->
    Wx = wx:new(),
    {Frame, Pid} = wx:batch(fun()->create_window(Wx) end),
    wxWindow:show(Frame),
    loop(Pid),
    ok.
%% 画面を表示
create_window(Wx)->
    Option = [ { size, {310, 150 } } ],
    Str = "setVisible Test.",
    Frame = wxFrame:new(Wx,
                        ?wxID_ANY,
                        Str,
                        Option),
    % Set Button On Frame
    %PnlOp = [ {pos, {120, 10}}, {size, {50, 10}}],
    BtnOp = [ {label, "show Window"} ],
    Panel = wxPanel:new(Frame, 120, 10, 50, 10),
    Button = wxButton:new(Panel, ?wxIDButton, BtnOp),
    % Create Status Bar
    wxFrame:createStatusBar(Frame, []),
    wxFrame:setStatusText(Frame, Str),

    %% Dialog生成
    Pid = spawn_link(fun() -> setVisible2:start() end),

    %% イベントを登録
    wxFrame:connect( Frame, close_window ),%% Closeボタン
    wxButton:connect(Button, command_button_clicked),%% show Windowボタン

    {Frame, Pid}.

loop(Pid)->
    receive
        %% Closeボタン押下時
        #wx{obj = Obj, event = #wxClose{}}->
            io:format("~p Closing window ~n", [self()]),
            wxWindow:destroy(Obj);
        %% ボタン押下時
        #wx{ event = #wxCommand{} } ->
            Pid ! {visible, self()},
            io:format(" Clicked Button ~n"),
            loop(Pid);
        %% Dialogからのメッセージがあった時
        {reply, ok}->
            loop(Pid)
    end.

setVisible2.erl:

-module(setVisible2).
-export([start/0]).
%%-export([new/2]). %% API
-include_lib("wx.hrl").

start()->
    Wx = wx:new(),
    Dialog = wx:batch(fun()->new(Wx, 100) end),
    loop(Dialog).

new(Parent,Id)->
    Option = [ { size, {210, 100} } ],
    Head = "Target Display",
    Dialog = wxDialog:new(Parent, Id, Head, Option),

    Str = "Push close Button.",
    OPST1 = [{pos, {50,10}}],
    wxStaticText:new( Dialog, 1 , Str, OPST1),
 
    wxDialog:connect(Dialog, close_window),

    Dialog.

%% 閉じるボタン押下時の動作
loop(Dialog)->
    receive
        %% closeボタン押下時
        #wx{event=#wxClose{ type = close_window }}->
            wxDialog:show(Dialog, [{show, false}]),
            loop(Dialog);
        %% 他ウィンドウのボタンが押下された時
        {visible, _From} ->
            %% Dialogを表示する
            wxDialog:show(Dialog, [{show, true}]),
            _From ! {reply, ok},
            loop(Dialog)
    end.





2011年10月15日土曜日

Erlang 固定サイズのFrameのサイズを表示する

そのFrame画面内に、wxStaticTextでFrameの幅と高さを表示させるサンプル。

表示画面:


ソース:


-module(getSize).
-export([start/0]).
-include_lib("wx.hrl").

start()->
    Wx = wx:new(),
    Frame = wx:batch(fun()->create_window(Wx) end),
    wxWindow:show(Frame),
    loop(),
    %wx:destory(),
    ok.

create_window(Wx)->

    Option = [ { size, {310, 100 } } ],

    Frame = wxFrame:new(Wx,
                         ?wxID_ANY,
                        "show Size of Display!",
                       Option),

    %% get size
    [ { size, {X ,Y } } ] = Option,
    Width = string:concat("width = ", integer_to_list(X)),
    Height = string:concat("height = ", integer_to_list(Y)),

    %% create text
    OPST1 = [{pos, {110,10}}],
    OPST2 = [{pos, {110,30}}],
    wxStaticText:new( Frame, 1 , Width, OPST1),
    wxStaticText:new( Frame, 2 , Height, OPST2),

    wxFrame:connect( Frame, close_window ),

    Frame.

loop()->
    receive
        #wx{ obj = Obj, event = #wxClose{ type = close_window } } ->
            io:format("~p Closing window ~n",[self()]),
            wxWindow:destroy(Obj),
            ok
    end.