« 2008年8月 | メイン | 2008年10月 »

2008年9月30日 (火)

XPのデスクトップをVista風にしてみよう(SP3対応)

※SP3対応の追記は下のほうにあります・・・

Roetnmyq_s

たとえばこんな感じ。
拡大すると・・・

Dhtcmxdo

このようになります。

2つの方法を併用することでXPのデザインがVista風(あくまでそれっぽいもの)になります。
1.Vista風のXP用デスクトップデザインをインストールする
2.Vistaの標準フォント「メイリオ」を手に入れる

まず、1の方法。
それは、詳しくは↓のブログにて・・・
参照 : http://blog.kansai.com/maccho/69
ダウンロード | Universal UXTheme Patcher v1.2 - テーマ変更用の uxtheme.dll パッチプログラムをとってきて、Microsoft以外のテーマを使えるようにするためにロックをはずします。
※注:XPのレジストリをいじるっぽいので、セキュリティを気にする人はやめておいたほうがいいかも。

VistaCG by ~spaceqcg on deviantARTからrarファイルを取ってきて、ファイルを開く。
その中から、「VistaCG32」フォルダをC:\WINDOWS\Resources\Themesにコピーして、「VistaCG」にリネームしましょう。(「VistaCG48」は、スタートメニューの文字が切れて表示されてしまうため、使えないそうです)

こうすると「画面のプロパティ」で普通に使えるようになります。

補足:FireFox2.0でVista-aero ってテーマを入手すれば、さらにそれっぽくなります^^

蛇足:deviantART(http://www.deviantart.com/)はいろんなPCパーツやらPhotoshop、Illastratorなんかのプラグインが投稿されていて結構面白いサイトですよsmile

2.の「メイリオ」フォントを手に入れるには。
一番手っ取り早いのは、Vistaが入っているPCから「メイリオ」フォントをコピーしてきて、XPのフォントに入れる方法。

「メイリオ」フォントはClearTypeというフォントなので、XPで使うにはちょっと設定をいじります。
�[デスクトップ]を右クリックして[プロパティ]を表示
�[デザイン]タブ−[効果]ボタンを選択
�「次の方法でスクリーンフォントの縁を滑らかにする」にチェックを入れる
�「ClearType」を選択する

周りにVistaがねーよ!という方はこちらの方法で「メイリオ」を入手することができます。
http://itpro.nikkeibp.co.jp/article/NEWS/20071225/290160/
私はこの方法で入手しました。

「Visual C# 2008 Express Edition」というマイクロソフト提供の無料開発ツールをダウンロードすると「メイリオ」がついてきます。
このソフト、プログラマとかが使うソフトなんで、C#を趣味で勉強している方か、仕事でプログラミングしてるよーって方以外は使えない代物・・・そして結構サイズがでかいんで、ダウンロード&インストール時間が長い。
ソフトの方はいらなければアンインストールしてしまっていいと思います。
面倒臭がらず、気力がある人は手に入れてください。
(私は使う・・・かも知れないと思って消してないけど・・・C#なんてほぼ1年触ってないよ・・・orz)

こうしていろいろ苦労(?)して、XPをVista風にすることが出来たわけです。
興味がある人は試してみては?

追記:Universal UXTheme Patcher v1.2 - テーマ変更用の uxtheme.dll パッチプログラムに関して
Universal UXTheme Patcher v1.2は、XPのSP3だとエラーになって正しく動作しません。(SP1とSP2のみの対応)
というわけで、SP3の場合は、↓

UXTender, the SP3 UxTheme Patcher 1.2

をダウンロード。
1
あとはVistaCG by ~spaceqcg on deviantARTでデザイン取ってきて、上のようにするだけ。

あくまでも実行は自己責任でお願いしますです。

2008年9月14日 (日)

VBA:アプリケーションの二重起動を防ぐ

Sub AppOverlap()
    Dim objApp As Word.Application
    Dim myAppOpen As Boolean

    On Error GoTo HandleErr

    Set objApp = GetObject(, "Word.Application")
    myAppOpen = True

MacroContinue:
    'Wordのインスタンスが作成されていなかったら作成する
    If myAppOpen = False Then
       Set objApp = CreateObject("Word.Application")
    Else
        Msgbox("Wordが起動中です。")
        Exit Sub
    End If

    '新規文書を挿入する
    With objApp
        .Visible = True
        .WindowState = wdWindowStateMinimize
        .Documents.Add
    End With

    Set objApp = Nothing

    Exit Sub

HandleErr:
    'WordオブジェクトにGetObject関数でアクセスできなかった(Wordが未起動だった)場合
    If Err.Number = 429 Then
        myAppOpen = False
        Resume MacroContinue
    End If
End Sub

メモ:鉄板焼きのおいしいお店

先輩に教えてもらった、鉄板焼きのおいしいお店

2年前に教えてもらったのにまだ行って無いんだ・・・行きたいなぁ。

2008年9月10日 (水)

ストアドプロシージャに関する個人的メモ(For Transact-SQL)

/*ストアドプロシージャ作成*/

CREATE PROCEDURE
[ストアドプロシージャ名]
(
    @[引数名] [引数データ型]       --引数
)
AS
BEGIN

    ・・・
    --ここにいろいろSQLとか処理を書く
    ・・・
END

/*CREATE PROCEDUREのBEGIN~ENDの中身の関数やら制御文やら*/

/*Transact-SQL ステートメントまたはストアド プロシージャで
処理された行数を示すメッセージが結果セットの一部として返されないようにする*/

SET NOCOUNT [ ON | OFF ] --ONを設定するとパフォーマンスが向上するらしい。
⇒詳しくは http://msdn.microsoft.com/ja-jp/library/ms189837.aspx

/*変数の宣言*/

DECLARE @[変数名] [変数データ型]

使えるのは、DBで使えるデータ型とTABLE、CURSOR、XMLなど・・・

/*変数の値の入れ方*/
SET @Name = 'Jack' --単体の場合

SELECT @FirstName = 'Tom',
      @LastName = 'Smith',
      @BirthDate = '1980/01/14' --複数設定の場合

--SELECT文の中で代入することも可能
SELECT
    @FirstName = FirstName,
    @LastName = LastName,
    @FullName = FirstName + ' ' + LastName,
    @BirthDate = BirthDate
FROM
    UserTable

--※注意!:SELECTステートメントの中で、結果取得と代入は同時にできない。
SELECT
    FirstName,
    @LastName = LastName --これはダメ!
FROM
    UserTable

--UPDATEステートメントの中でも代入できる!
UPDATE Inventory
SET @mnsCost = Cost = Cost * @fltTaxRate
WHERE InventoryId = @InventoryId

/*カーソルの使い方*/
/*カーソルを宣言して、データを取得するためのSQLを設定*/

DECLARE [カーソル名]または@[カーソル名] CURSOR FOR
    SELECT
        ・・・・
    FROM
        ・・・・
    WHERE
        ・・・・

OPEN [カーソル名]または@[カーソル名] --カーソルを開く
FETCH NEXT FROM [カーソル名]または@[カーソル名] INTO @変数1, @変数2・・・ --ここの変数はカーソルで設定したSELECT文の抽出項目
WHILE (@@FETCH_STATUS = 0)  ---- 最終行でない限りBEGIN-END間をループ処理する
    BEGIN
        ・・・
    END
CLOSE [カーソル名]または@[カーソル名] --カーソルが保持していたレコードセットを解放
DEALLOCATE [カーソル名]または@[カーソル名] --カーソル構造削除(削除しなければ、カーソルは再度利用可能

/*テーブル変数の使い方*/
/*テーブル変数は一時テーブル('#'を付けて作成するやつ)とよく似てる*/

DECLARE @MyTableVar TABLE
(
    Id     INT     PRIMARY KEY,
    Name  VARCHAR(20)
)

INSERT @MyTableVar VALUES (1, 'Anne')
INSERT @MyTableVar VALUES (2, 'Nike')
SELECT * FROM @MyTableVar

--SELECT、UPDATE、DELETE、INSERT、DECLARE CURSORステートメントにしか使えない
--SELECT~INTOのあて先では使えない
--ローカルで作成されるので宣言されたストアドプロシージャ、関数内でしか使えない
--ロールバックされない

--フロー制御(IF~ELSEなど)は調べればすぐわかるので割愛
--あ、IF文だけ。

IF @Status > 0
BEGIN
    ・・・
END
ELSE
BEGIN

    ・・・
END

とか、

IF EXISTS (SELECT MemberId FROM MemberList WHERE DeleteFlag = @Delflg) -- IF NOT EXISTSとか
・・・

/*トランザクション*/
BEGIN TRANSACTION
・・・
COMMIT TRANSACTION
・・・
ROLLBACK TRANSACTION

/*例外処理+トランザクションとエラーメッセージ表示*/
BEGIN TRY
    BEGIN TRANSACTION

・・・
    COMMIT TRANSACTION
END TRY
BEGIN CATCH
    DEALLOCATE
[カーソル名] --カーソルがあれば・・・
    ROLLBACK TRANSACTION
・・・
    PRINT 'エラーが発生しました: ' + CAST(ERROR_MESSAGE() AS nvarchar ) --ERROR_MESSAGE()はCATCHブロックの関数
END CATCH

--PRINT 'メッセージ'でメッセージ欄に出力
--CATCHブロックの関数

ERROR_MESSAGE --呼び出し元のアプリケーションに返されるエラーメッセージを返す
ERROR_NUMBER --エラー識別子を返す
ERROR_SEVERITY --重大度を返す
ERROR_STATE --状態を返す
ERROR_PROCEDURE --エラーが発生したストアドプロシージャ(またはそれ以外のプログラミングオブジェクト)の名前を返す
ERROR_LINE --エラーが発生したプロシージャの行番号を返す

こんなもんかしらー。
あ、忘れてた、ストアドプロシージャの削除方法。

DROP PROCEDUR
[ストアドプロシージャ名]

フォトアルバム

2012年5月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

My Photostream

  • Flickrにアップしてる写真の一部です。
    www.flickr.com
    This is a Flickr badge showing public photos and videos from micek_flicek. Make your own badge here.

クリック募金

  • クリックで救える命がある。
Powered by Six Apart