<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C# | ばすにっきTips</title>
	<atom:link href="https://takabus.com/tips/category/c-2/feed/" rel="self" type="application/rss+xml" />
	<link>https://takabus.com/tips</link>
	<description>プログラミングやサーバー、日々のTipsをメモしています。</description>
	<lastBuildDate>Sat, 05 Nov 2022 11:24:08 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.3</generator>

<image>
	<url>https://takabus.com/tips/wp-content/uploads/2022/12/cropped-tips-1-32x32.png</url>
	<title>C# | ばすにっきTips</title>
	<link>https://takabus.com/tips</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【C#】フォルダの存在を確認し、なければフォルダを作成するには？</title>
		<link>https://takabus.com/tips/2182/</link>
					<comments>https://takabus.com/tips/2182/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Sat, 05 Nov 2022 11:24:06 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=2182</guid>

					<description><![CDATA[フォルダの存在を確認し、なければフォルダを作成するサンプルコードをご紹介します]]></description>
										<content:encoded><![CDATA[
<p>C#でフォルダの存在を確認し、なければフォルダを作成するサンプルコードをご紹介します</p>



<h2 class="wp-block-heading">サンプルコード</h2>



<pre class="wp-block-code"><code>using System.IO;

string path=@"フォルダのパスを指定する";
if (!System.IO.Directory.Exists(path))
{
        Directory.CreateDirectory(path);
}
</code></pre>



<p>実行すると、フォルダがあるか確認し、フォルダが存在していなければフォルダを作成します。</p>



<h2 class="wp-block-heading">ダイアログボックスで確認をしてから作成する</h2>



<p>フォルダ作成前にダイアログボックスを出したいなら、以下のようにします。</p>



<pre class="wp-block-code"><code>using System.IO;
using System.Windows.Forms;

string path=@"フォルダのパスを指定する";
if (!System.IO.Directory.Exists(path))
{
    var r = MessageBox.Show(
        "フォルダを作成しますか？",
        "フォルダが存在しません",
        MessageBoxButtons.YesNo,
        MessageBoxIcon.Question
    );
    if (r == DialogResult.Yes)
    {
        Directory.CreateDirectory(path);
    }
}
</code></pre>



<h2 class="wp-block-heading">まとめ</h2>



<p>C#に慣れている方なら、空でかけるコードだとは思いますが、初心者向けに記事にしてみました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/2182/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【C#】現在日時のフォルダを作成するには？</title>
		<link>https://takabus.com/tips/2180/</link>
					<comments>https://takabus.com/tips/2180/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Sat, 05 Nov 2022 10:59:49 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=2180</guid>

					<description><![CDATA[C#で現在日時のフォルダ（ディレクトリ）を作成するサンプルをご紹介します。]]></description>
										<content:encoded><![CDATA[
<p>C#で現在日時のフォルダ（ディレクトリ）を作成するサンプルをご紹介します。</p>



<h2 class="wp-block-heading">サンプルコード</h2>



<pre class="wp-block-code"><code>//現在日時を文字列として取得する
var dt = DateTime.Now;
var dtstr = dt.ToString("yyyyMMdd-Hmmss");
//フォルダのパスを作成する
string path = System.IO.Path.Combine("C:\", dtstr);
// デスクトップに作りたいならこう↓
// string path = System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),dtstr);
//フォルダを作成する
System.IO.Directory.CreateDirectory(path);</code></pre>



<p>これを実行すると、Cドライブ直下に<code>20221105-195528</code>のような名前のついたフォルダが作成されます。</p>



<h2 class="wp-block-heading">解説</h2>



<p>まず、DateTime.Nowで現在日時のDateTimeを取得します。</p>



<pre class="wp-block-code"><code>//現在日時を文字列として取得する
var dt = DateTime.Now;
var dtstr = dt.ToString("yyyyMMdd-Hmmss");</code></pre>



<p>ToStringで文字列としてフォーマットし、文字列を変数に格納しています。</p>



<p>フォーマット文字列は以下の通りです。</p>




<a rel="noopener" href="https://dobon.net/vb/dotnet/string/datetimeformat.html" title="日時（DateTimeオブジェクト）を文字列に変換する" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://dobon.net/s/img/og/m/vb/dotnet/string/datetimeformat.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">日時（DateTimeオブジェクト）を文字列に変換する</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://dobon.net/vb/dotnet/string/datetimeformat.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">dobon.net</div></div></div></div></a>



<p>あとはパスを構築し、CreateDirectoryで指定したパスのディレクトリを作成するだけです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/2180/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【C#】コンピューターをロックするには？</title>
		<link>https://takabus.com/tips/525/</link>
					<comments>https://takabus.com/tips/525/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Sat, 30 Oct 2021 08:46:59 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=525</guid>

					<description><![CDATA[C#でコンピューターをロックする方法を紹介します。]]></description>
										<content:encoded><![CDATA[
<p>C#でコンピューターをロックする方法を紹介します。</p>



<h2 class="wp-block-heading">コンピューターをロックする</h2>



<p>C#でコンピューターをロックするには、以下のようにします。</p>



<pre class="wp-block-code"><code>Process.Start(@"C:\WINDOWS\system32\rundll32.exe", "user32.dll,LockWorkStation");</code></pre>



<p>rundll32.exeをProcessクラスで呼び出すことで、コンピューターをロックすることができます。</p>



<p>なお、プログラムの実行に管理者権限は必要ありません。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>このほか、コマンドプロンプトのコマンドを呼び出して実行する方法もあります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/525/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>C#でPDFにしおりを追加するには？（iTextsharp）</title>
		<link>https://takabus.com/tips/296/</link>
					<comments>https://takabus.com/tips/296/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Fri, 01 Oct 2021 09:14:25 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[iTextSharp]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=296</guid>

					<description><![CDATA[C#で既存のPDFファイルにしおりを追加したいときのサンプルを紹介します。iTextSharpを使用した方法です。]]></description>
										<content:encoded><![CDATA[
<p>C#で既存のPDFファイルにしおりを追加したいときのサンプルを紹介します。iTextSharpを使用した方法です。</p>



<h2 class="wp-block-heading">サンプルコード</h2>



<p>コードは以下のとおりです。</p>



<pre class="wp-block-code"><code>using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.IO;

private void AddBookmarksToExistingPDF()
{
    //出力PDFファイル名
    string srcPdfFilePath = @"test.pdf";
    string makePdfFilePath = @"test_out.pdf";
    Document pdfDocument = new Document();
    pdfDocument.Open();

    //FileStreamを作成
    FileStream fileStream = new FileStream(makePdfFilePath, FileMode.Create);

    //PDFをストリームにコピーする
    PdfCopy pdfCopy = new PdfCopy(pdfDocument, fileStream);
    var pdfReader = new PdfReader(srcPdfFilePath);
    pdfCopy.AddDocument(pdfReader);
    pdfReader.Close();

    //しおりのリストを作成
    List&lt;Dictionary&lt;string, object>> bookmarks = new List&lt;Dictionary&lt;string, object>>();

    // しおりアイテムを作成<strong>（※複数のしおりを追加する場合はここを繰り返します）</strong>
    Dictionary&lt;string, object> bookmark = new Dictionary&lt;string, object>();
    bookmark.Add("Title", "Sample");
    bookmark.Add("Action", "GoTo");
    bookmark.Add("Page", "1");
    bookmarks.Add(bookmark);//しおりのリストに追加

    //リストをしおりに設定する
    pdfCopy.Outlines = bookmarks;

    //新しいPDFファイルに書き出す
    pdfDocument.Close();
}</code></pre>



<p>なお、iTextSharpのバージョンは5.5.13.1です。</p>



<h2 class="wp-block-heading">解説</h2>



<p>全体の流れは以下のとおりです。</p>



<ol><li>まず、<strong>しおり1つに対し、1つのDictionaryをつくります。</strong></li><li>そして、<strong>このDictionaryにパラメーターを追加します。</strong>しおりのタイトルや移動先ページといったパラメータを追加します。</li><li>最後にListを作成し、<strong>Dictionaryを1つのListにまとめます。</strong></li><li>PDFCopyオブジェクトのOutlinesプロパティにListをsetします。</li><li>ストリームをクローズすれば、しおりが追加されたPDFが出力されます。</li></ol>



<p><span class="red"><span class="marker-under">Dictionaryには1つのしおりに対するパラメータを束ねます。</span></span>1つのしおりに対して、1つのDictionaryができることになります。</p>



<p>最後に複数のDictionaryを1つのListにまとめて、iTextSharpに渡します。あとはiTextSharpが自動的にしおりを追加してくれます。</p>



<h2 class="wp-block-heading">しおりに設定できるパラメータについて</h2>



<p>しおりに設定できるパラメーターについては、Adobeが発行しているPDF標準仕様書に記載があります。</p>



<p><a href="https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf">https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf</a></p>



<figure class="wp-block-image size-full"><a href="https://takabus.com/tips/wp-content/uploads/2021/10/image-1.png"><img fetchpriority="high" decoding="async" width="673" height="286" src="https://takabus.com/tips/wp-content/uploads/2021/10/image-1.png" alt="Action types" class="wp-image-298" srcset="https://takabus.com/tips/wp-content/uploads/2021/10/image-1.png 673w, https://takabus.com/tips/wp-content/uploads/2021/10/image-1-300x127.png 300w" sizes="(max-width: 673px) 100vw, 673px" /></a><figcaption>Actionで指定できるプロパティ</figcaption></figure>



<figure class="wp-block-image size-full"><a href="https://takabus.com/tips/wp-content/uploads/2021/10/image.png"><img loading="lazy" decoding="async" width="540" height="574" src="https://takabus.com/tips/wp-content/uploads/2021/10/image.png" alt="Destination Syntax" class="wp-image-297" srcset="https://takabus.com/tips/wp-content/uploads/2021/10/image.png 540w, https://takabus.com/tips/wp-content/uploads/2021/10/image-282x300.png 282w" sizes="(max-width: 540px) 100vw, 540px" /></a><figcaption>ページ番号とともに表示形式も指定できる。(Portable document format — Part 1: PDF 1.7 &#8211; Adobeより）</figcaption></figure>



<p>ページ番号のみならず、表示倍率やページ表示（幅に合わせるなど）もしおりに設定することができます。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>C#でPDFにしおりを追加する方法を紹介しました。</p>



<p>実際にこのコードを使って開発してみましたが、それほど苦労なく実装できました。DictionaryとListの関係性さえ理解できれば、かんたんでしょう。ぜひお試しあれ。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/296/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CurlコマンドをC#のHttpClientに変換する方法</title>
		<link>https://takabus.com/tips/77/</link>
					<comments>https://takabus.com/tips/77/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Thu, 22 Jul 2021 14:53:23 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[HttpClient]]></category>
		<category><![CDATA[curl]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=77</guid>

					<description><![CDATA[curlコマンドをC#に移植したい場合の方法を紹介します。]]></description>
										<content:encoded><![CDATA[
<p>Curlコマンドで実行していた処理をC#に移植したい場合に使えるWebサービスがあります。</p>




<a rel="noopener" href="https://curl.olsh.me/" title="curl to C# converter" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fcurl.olsh.me%2F?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">curl to C# converter</div><div class="blogcard-snippet external-blogcard-snippet">curl to C# converter online</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://curl.olsh.me/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">curl.olsh.me</div></div></div></div></a>



<p>Curlコマンドを貼り付けてやると、C#のコードが自動生成されるというサービスです。</p>



<p>オプションをつけていても、ちゃんと変換されます。</p>



<p>とても便利なので、ぜひお試しください！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/77/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
