khroma in goo blog

カエルとお絵描きとプログラムの三角関係です。

Skype with sqlite3 #STEP2

2017-04-19 00:09:37 | 雑記
SQLite3でSkypeのDBを覗く会
STEP2:SkypeのDB「main.db」の場所をC#で把握する

以下メモ

#-----------------------------------------------#

/**
* C:\Users\[ユーザ名]\AppData\Roaming\Skype\[スカイプID]にmain.dbがある
* ⇒複数のSkypeIDにログインしたことがある場合、
*  "C:\Users\[ログインID]\AppData\Roaming\Skype"に
*  SkypeIDフォルダが複数あるぽい
*/

// "C:\Users\[ユーザ名]\AppData\Roaming"は以下のように取得する(System.~~(~~)の部分)
string dir = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+"\\Skype";

// まずはSkypeフォルダが存在するかチェック
if(Directory.Exists(dir))
{
// Skypeフォルダ内のサブフォルダを全て取得
IEnumerable<string> subFolders = Directory.EnumerateDirectories(dir, "*");

// サブフォルダを列挙
foreach (string subFolder in subFolders)
{
// サブフォルダ内にmain.dbファイルを持っているディレクトリを取得
string[] files = System.IO.Directory.GetFiles(subFolder, "main.db");

// main.dbファイルを持っているディレクトリを列挙
foreach (string f in files)
{
// SkypeIDを取得したいので、サブフォルダのフォルダ名だけ取り出し
// (もっといい方法があると思う)
// 2017/06/28 追記
// Path.GetFileName(サブフォルダぱす)でいけるっぽい、あとで検証
// フォームにリストボックス(ID:boxSkypeId)を用意したのでそれに表示してみる
boxSkypeId.Items.Add(System.IO.Path.GetDirectoryName(f).Replace(dir+"\\",""));
}
}
}
// Skypeフォルダが無かったらとりあえずリストボックスにメッセージ出しておこうかな・・・
else
{
boxSkypeId.Items.Add("フォルダが存在しません");
boxSkypeId.Items.Add("指定パス:"+dir);
}

#-----------------------------------------------#

つづく