<?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>JEDI Windows API &#187; Download</title>
	<atom:link href="http://blog.delphi-jedi.net/tag/download/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.delphi-jedi.net</link>
	<description>Joint Endeavor of Delphi Innovators of Windows Programming</description>
	<lastBuildDate>Sat, 21 Aug 2010 05:44:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Bits Part 2 &#8211; Downloading files</title>
		<link>http://blog.delphi-jedi.net/2008/04/30/bits-part-2-downloading-files/</link>
		<comments>http://blog.delphi-jedi.net/2008/04/30/bits-part-2-downloading-files/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 15:00:18 +0000</pubDate>
		<dc:creator>Chaosben</dc:creator>
				<category><![CDATA[JEDI Windows API Headers]]></category>
		<category><![CDATA[BITS]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[start]]></category>

		<guid isPermaLink="false">http://blog.delphi-jedi.net/?p=175</guid>
		<description><![CDATA[I hope you enjoyed the first part of the introduction to BITS. In this second part, we want to improve our job list (a little bit) and start own dowloads. The first task is, to replace the old TListbox with a TListview. I switched the ViewStyle to vsReport and added 3 columns: Name, State, GUID. [...]]]></description>
			<content:encoded><![CDATA[<p>I hope you enjoyed <a href="http://blog.delphi-jedi.net/2008/04/26/getting-started-with-bits/" target="_blank">the first part</a> of the introduction to BITS.<br />
In this second part, we want to improve our job list (a little bit) and start own dowloads.</p>
<p>The first task is, to replace the old TListbox with a TListview. I switched the ViewStyle to <em>vsReport</em> and added 3 columns: Name, State, GUID. Saving the GUID of the job as a string is not fine but goes with my laziness.<span id="more-175"></span> <img src='http://blog.delphi-jedi.net/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' />  We also have to change the code of the Timer. My whole OnTimer-Event looks like this:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">var</span><br />
&nbsp; Job : IBackgroundCopyJob;<br />
&nbsp; Jobs : IEnumBackgroundCopyJobs;<br />
&nbsp; Res : HRESULT;<br />
&nbsp; DisplayName : <span class="kw4">PWideChar</span>;<br />
&nbsp; Fetched : ULong;<br />
&nbsp; State : BG_JOB_STATE;<br />
&nbsp; JobID : TGUID;<br />
&nbsp; Item : TListItem;<br />
<span class="kw1">begin</span><br />
&nbsp; lv_Jobs.<span class="me1">Clear</span>;</p>
<p>&nbsp; Res := FManager.<span class="me1">EnumJobs</span><span class="br0">&#40;</span>BG_JOB_ENUM_ALL_USERS, Jobs<span class="br0">&#41;</span>;</p>
<p>&nbsp; <span class="kw1">if</span> <span class="kw1">not</span> Succeeded<span class="br0">&#40;</span>Res<span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; Res := FManager.<span class="me1">EnumJobs</span><span class="br0">&#40;</span><span class="nu0">0</span>, Jobs<span class="br0">&#41;</span>; &nbsp;</p>
<p>&nbsp; <span class="kw1">if</span> <span class="kw1">not</span> Succeeded<span class="br0">&#40;</span>Res<span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">raise</span> Exception.<span class="me1">Create</span><span class="br0">&#40;</span><span class="st0">&#8216;Can not enum BackgroundCopyJobs&#8217;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; <span class="kw1">while</span> Succeeded<span class="br0">&#40;</span>Jobs.<span class="me1">Next</span><span class="br0">&#40;</span><span class="nu0">1</span>, Job, @Fetched<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">and</span> <span class="br0">&#40;</span>Fetched = <span class="nu0">1</span><span class="br0">&#41;</span> <span class="kw1">do</span><br />
&nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; Item := lv_Jobs.<span class="me1">Items</span>.<span class="me1">Add</span>;</p>
<p>&nbsp; &nbsp; Item.<span class="me1">SubItems</span>.<span class="me1">Add</span><span class="br0">&#40;</span><span class="st0">&#8216;unknown&#8217;</span><span class="br0">&#41;</span>; &nbsp;<span class="co1">//state of the job</span><br />
&nbsp; &nbsp; Item.<span class="me1">SubItems</span>.<span class="me1">Add</span><span class="br0">&#40;</span><span class="st0">&#8216;unknown&#8217;</span><span class="br0">&#41;</span>; &nbsp;<span class="co1">//GUID of the job</span></p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> Succeeded<span class="br0">&#40;</span>Job.<span class="me1">GetDisplayName</span><span class="br0">&#40;</span>DisplayName<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; Item.<span class="me1">Caption</span> := DisplayName;<br />
&nbsp; &nbsp; &nbsp; CoTaskMemFree<span class="br0">&#40;</span>DisplayName<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span>;</p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> Succeeded<span class="br0">&#40;</span>Job.<span class="me1">GetState</span><span class="br0">&#40;</span>State<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">case</span> State <span class="kw1">of</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_QUEUED: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;queued&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_CONNECTING: &nbsp; &nbsp; &nbsp;Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;connecting&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_TRANSFERRING: &nbsp; &nbsp;Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;transfering&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_SUSPENDED: &nbsp; &nbsp; &nbsp; Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;suspended&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_ERROR: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;error&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_TRANSIENT_ERROR: Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;transient error&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_TRANSFERRED: &nbsp; &nbsp; Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;transferred&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_ACKNOWLEDGED: &nbsp; &nbsp;Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;acknowledged&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; BG_JOB_STATE_CANCELLED: &nbsp; &nbsp; &nbsp; Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> := <span class="st0">&#8216;cancelled&#8217;</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span>;</p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> Succeeded<span class="br0">&#40;</span>Job.<span class="me1">GetId</span><span class="br0">&#40;</span>JobID<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; Item.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> := <span class="kw3">GUIDToString</span><span class="br0">&#40;</span>JobID<span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; Job := <span class="kw2">nil</span>;</p>
<p>&nbsp; <span class="kw1">end</span>;<br />
<span class="kw1">end</span>;</div>
<p>Ok, this code will never win an art-award but is does what I want.</p>
<p>Now we have a fine list. But what is missing? Action &#8230; coders need interaction! <img src='http://blog.delphi-jedi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Thats why we add a TPopupMenu to the listview for these 4 actions: Resume, Suspend, Cancel, Complete. Each OnClick-Code may look like this:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">var</span><br />
&nbsp; Job : IBackgroundCopyJob;<br />
<span class="kw1">begin</span><br />
&nbsp; <span class="kw1">if</span> lv_Jobs.<span class="me1">ItemIndex</span> &gt; <span class="nu0">-1</span> <span class="kw1">then</span><br />
&nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> Succeeded<span class="br0">&#40;</span>FManager.<span class="me1">GetJob</span><span class="br0">&#40;</span><span class="kw3">StringToGUID</span><span class="br0">&#40;</span>lv_Jobs.<span class="me1">Selected</span>.<span class="me1">SubItems</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span>, Job<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; Job.<span class="me1">Resume</span>; <span class="co1">//change this to Suspend, Cancel, Complete</span><br />
&nbsp; <span class="kw1">end</span>;<br />
<span class="kw1">end</span>;</div>
<p>So whats our state of affairs? There is a list of the current BITS-Jobs of our system. And we can control the states of the jobs. And &#8211; you are right &#8211; it&#8217;s still boring.</p>
<p>Starting a download job is very easy. Just put this code somewhere (for example in the OnClick-Event of a TButton):</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">var</span><br />
&nbsp; Job : IBackgroundCopyJob;<br />
&nbsp; JobID : TGUID;<br />
<span class="kw1">begin</span><br />
&nbsp; <span class="kw1">if</span> Succeeded<span class="br0">&#40;</span>FManager.<span class="me1">CreateJob</span><span class="br0">&#40;</span><span class="st0">&#8216;My Download&#8217;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BG_JOB_TYPE_DOWNLOAD,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JobID,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Job<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> Succeeded<span class="br0">&#40;</span>Job.<span class="me1">AddFile</span><span class="br0">&#40;</span><span class="st0">&#8216;http://blog.delphi-jedi.net/wp-content/uploads/2008/04/jwabits.zip&#8217;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&#8216;d:\thebitsfile.zip&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; Job.<span class="me1">Resume</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; <span class="kw1">end</span>;<br />
<span class="kw1">end</span>;</div>
<p>Thats it. <img src='http://blog.delphi-jedi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Easy, isn&#8217;t it? Just run the app, click the button and watch the listview. If all went ok, the state of the job will switch from <em>suspended</em> via <em>connecting</em>, <em>transferring</em> to <em>transferred</em>.</p>
<p>Now its time to wonder: Where is my file? <img src='http://blog.delphi-jedi.net/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> The file is already there, although with another name. BITS creates temporary files, while downloading the content. These files are usally named like <em>BIT*.tmp</em>. In order to get the real file out of the temporary file, we have to call the <em>Complete </em>procedure of the corresponding job, when it has reached the state <em>transferred</em>. There are at least 2 ways to find out, if the job is ready to be completed: Poll the state of the job or implement the <strong>IBackgroundCopyCallback</strong> interface. The last way is the smart one and it minimizes the length of code. Only 4 steps are needed to implment this interface:</p>
<ol>
<li>add <em>IBackgroundCopyCallback </em>to the class declaration of your form
<div class="dean_ch" style="white-space: wrap;">TForm1 = <span class="kw1">class</span><span class="br0">&#40;</span>TForm, IBackgroundCopyCallback<span class="br0">&#41;</span></div>
</li>
<li>add these 3 functions to the Form-class declaration and implementation
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">function</span> JobTransferred<span class="br0">&#40;</span>pJob: IBackgroundCopyJob<span class="br0">&#41;</span>: HRESULT; <span class="kw1">stdcall</span>;<br />
<span class="kw1">function</span> JobError<span class="br0">&#40;</span>pJob: IBackgroundCopyJob; pError: IBackgroundCopyError<span class="br0">&#41;</span>: HRESULT; <span class="kw1">stdcall</span>;<br />
<span class="kw1">function</span> JobModification<span class="br0">&#40;</span>pJob: IBackgroundCopyJob; dwReserved: <span class="kw4">DWORD</span><span class="br0">&#41;</span>: HRESULT; <span class="kw1">stdcall</span>;</div>
</li>
<li>let all 3 functions return S_OK</li>
<li>insert into the <em>JobTransferred</em> procedure the line:
<div class="dean_ch" style="white-space: wrap;">pJob.<span class="me1">Complete</span>;</div>
</li>
</ol>
<p>Now we can use our form as notfier for events of BITS-jobs. Just call the <em>SetNotifyInterface</em> function (with the form-instance as 1st param) of the Job after creating it. I put this code after the <em>Job.Resume </em>call. If you start the programm now and add the job again, it should disappear after getting transferred and the local file should appear in the location you have choosen.</p>
<p>But be aware: this notification is only working as long as the interface exists. If you start a download, shut down the programm and restart it without setting the notify interface again, you will never get informed about the complete transmission of the job.</p>
<p>That&#8217;s it. It remains to say: Play around with the interfaces and functions to get in touch with BITS.<br />
Because: <strong>Playing is learning!</strong></p>
<p>PS: You can download the project of this article here: <a href="http://blog.delphi-jedi.net/wp-content/uploads/2008/06/example-bits-2.zip">example-bits-2</a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.delphi-jedi.net/2008/04/30/bits-part-2-downloading-files/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Download RunEl</title>
		<link>http://blog.delphi-jedi.net/2008/03/13/download-runel/</link>
		<comments>http://blog.delphi-jedi.net/2008/03/13/download-runel/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 12:40:27 +0000</pubDate>
		<dc:creator>Christian Wimmer</dc:creator>
				<category><![CDATA[JWSCL Downloads]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[RunEl]]></category>

		<guid isPermaLink="false">http://blog.delphi-jedi.net/2008/03/13/download-runel/</guid>
		<description><![CDATA[RunEl download section Find a description here. Versions and Changelog RunEl 1.0 Application First release Please send bugs to mail@delphi-jedi.net , the mailinglist or the forum.]]></description>
			<content:encoded><![CDATA[<p><u>RunEl download section</u></p>
<p>Find a description <a href="http://blog.delphi-jedi.net/2008/03/13/run-a-program-elevated/">here</a>.</p>
<p>Versions and Changelog</p>
<ul>
<li><a href="http://blog.delphi-jedi.net/wp-content/uploads/2008/03/runel-10.zip" title="RunEl 1.0">RunEl 1.0</a> Application
<ul>
<li>First release</li>
</ul>
</li>
</ul>
<p>Please send bugs to <a href="mailto:mail@delphi-jedi.net">mail@delphi-jedi.net</a> , the <a href="http://sourceforge.net/mail/?group_id=121894" title="Go get more information about our mailinglists.">mailinglist</a> or the <a href="http://sourceforge.net/tracker/?group_id=121894" title="Go to tracker on SF.">forum</a>.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.delphi-jedi.net/2008/03/13/download-runel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New and additional Header files from Rudy</title>
		<link>http://blog.delphi-jedi.net/2008/03/10/new-and-additional-header-files-from-rudy/</link>
		<comments>http://blog.delphi-jedi.net/2008/03/10/new-and-additional-header-files-from-rudy/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 20:28:53 +0000</pubDate>
		<dc:creator>Christian Wimmer</dc:creator>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[Conversion]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[header]]></category>
		<category><![CDATA[JWA]]></category>
		<category><![CDATA[Rudy]]></category>

		<guid isPermaLink="false">http://blog.delphi-jedi.net/2008/03/10/new-and-additional-header-files-from-rudy/</guid>
		<description><![CDATA[Rudy Velthuis released a new version of his Windows header files converted from C to Delphi. The converted header files contain: Shell API shellapi.h, ulrmon.h, urlhist.h, shlwapi.h, shappmgr.h, shfolders.h and the shlobj range (i.e. shlobj.h, shlguid.h, shobjidl.h, isguid.h, exdisp.h and shtypes.h) WinCrypt ncrypt.h, bcrypt.h, ntstatus.h and wincrypt.h. We will integrate his excellent work into the [...]]]></description>
			<content:encoded><![CDATA[<p>Rudy Velthuis released a new version of his Windows header files converted from C to Delphi.</p>
<p>The converted header files contain:</p>
<ul>
<li>Shell API<br />
shellapi.h, ulrmon.h, urlhist.h, shlwapi.h,            shappmgr.h, shfolders.h and the shlobj range (i.e. shlobj.h,            shlguid.h, shobjidl.h, isguid.h, exdisp.h and shtypes.h)</li>
<li>WinCrypt<br />
ncrypt.h, bcrypt.h, ntstatus.h and wincrypt.h.</li>
</ul>
<p>We will integrate his <strong>excellent work</strong> into the JEDI API LIB. However this task will need some time.  So if you need the new functions you should have a look at <a href="http://rvelthuis.de/downloads.html" title="Go to Rudy.">Rudy&#8217;s download site</a> or help us to accomplish this task (send mail).<a href="http://rvelthuis.de/downloads.html" title="Go to Rudy."><br />
</a></p>
<p>Christian</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.delphi-jedi.net/2008/03/10/new-and-additional-header-files-from-rudy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JWSCL Release Revision 316</title>
		<link>http://blog.delphi-jedi.net/2008/03/03/jwscl-release-revision-316/</link>
		<comments>http://blog.delphi-jedi.net/2008/03/03/jwscl-release-revision-316/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 09:55:23 +0000</pubDate>
		<dc:creator>Christian Wimmer</dc:creator>
				<category><![CDATA[JWSCL Downloads]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[JWSCL]]></category>

		<guid isPermaLink="false">http://blog.delphi-jedi.net/2008/03/03/jwscl-release-revision-316/</guid>
		<description><![CDATA[The JEDI Windows Security Code Library Release of Revision 316 is now available to download on Sourceforge. Direct link ~8.5 MiB Also read this and find out how to setup the library! The JWSCL Download also contains the JWAPI Revision 315. Changes: many bugfixes added AuthZ API added Terminal Service API added more examples added extended [...]]]></description>
			<content:encoded><![CDATA[<p>The JEDI Windows Security Code Library Release of Revision 316 is now available to download on Sourceforge.</p>
<p><a title="Download JWSCL" href="http://sourceforge.net/project/showfiles.php?group_id=121894&amp;package_id=249648" target="_blank">Direct link</a> ~8.5 MiB</p>
<p><span style="font-size: small;">Also read <a href="../2008/03/03/how-to-setup-jwscl/">this</a> and find out how to setup the library!<br />
</span></p>
<p>The JWSCL Download also contains the JWAPI Revision 315.</p>
<p>Changes:</p>
<ul>
<li>many bugfixes</li>
<li>added AuthZ API</li>
<li>added Terminal Service API</li>
<li>added more examples</li>
<li>added extended process creation support (JwsclProcess.pas)</li>
</ul>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.delphi-jedi.net/2008/03/03/jwscl-release-revision-316/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JEDI Windows API Release 315</title>
		<link>http://blog.delphi-jedi.net/2007/10/21/jedi-windows-api-release-315/</link>
		<comments>http://blog.delphi-jedi.net/2007/10/21/jedi-windows-api-release-315/#comments</comments>
		<pubDate>Sun, 21 Oct 2007 13:25:16 +0000</pubDate>
		<dc:creator>Christian Wimmer</dc:creator>
				<category><![CDATA[JWA Downloads]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[JWA]]></category>

		<guid isPermaLink="false">http://blog.delphi-jedi.net/2007/10/21/jedi-windows-api-release-315/</guid>
		<description><![CDATA[The JEDI Windows API Download Revision 315 is now available on SourceForge. Direct link (4,5mb) Changes: + Many bugfixes + additional terminal service functions (jwaWinsta.pas) + added JwaWinInet.pas]]></description>
			<content:encoded><![CDATA[<p>The JEDI Windows API Download <strong>Revision 315</strong> is now available on SourceForge.</p>
<p><a href="http://sourceforge.net/project/showfiles.php?group_id=121894&amp;package_id=251762" title="Direct Link" target="_blank">Direct link</a> (4,5mb)</p>
<p>Changes:<br />
+ Many bugfixes<br />
+ additional terminal service functions (jwaWinsta.pas)<br />
+ added JwaWinInet.pas</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.delphi-jedi.net/2007/10/21/jedi-windows-api-release-315/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
