<?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>VCL Developer &#187; Delphi</title>
	<atom:link href="http://vcldeveloper.com/tag/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://vcldeveloper.com</link>
	<description>Ali Keshavarz&#039;s Website</description>
	<lastBuildDate>Mon, 26 Jul 2010 00:37:57 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>ProcessInfo 1.3 is released</title>
		<link>http://vcldeveloper.com/news/processinfo-1-3-is-released/</link>
		<comments>http://vcldeveloper.com/news/processinfo-1-3-is-released/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 00:20:25 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ProcessInfo]]></category>
		<category><![CDATA[TAppInfo]]></category>
		<category><![CDATA[TProcessInfo]]></category>
		<category><![CDATA[دلفی]]></category>
		<category><![CDATA[کامپوننت]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=370</guid>
		<description><![CDATA[Hi, ProcessInfo 1.3 is released. The changes in this release are: CPU usage is added to TProcessItem. Is64Bit is added to TProcessItem. IsAccessible is added to TProcessItem. Setting thread priority is added to TThreadItem. Setting process base priority class is added to TProcessItem. To download ProcessInfo 1.3, please go to ProcessInfo page.]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>ProcessInfo 1.3 is released. The changes in this release are:</p>
<ul>
<li>CPU usage is added to TProcessItem.</li>
<li> Is64Bit is added to TProcessItem.</li>
<li> IsAccessible is added to TProcessItem.</li>
<li> Setting thread priority is added to TThreadItem.</li>
<li> Setting process base priority class is added to TProcessItem.</li>
</ul>
<p>To download ProcessInfo 1.3, please go to <a href="http://vcldeveloper.com/category/products/products-components/process-info/">ProcessInfo</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/news/processinfo-1-3-is-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to use TProcessInfo #2</title>
		<link>http://vcldeveloper.com/tips-tricks/how-to-use-tprocessinfo-2/</link>
		<comments>http://vcldeveloper.com/tips-tricks/how-to-use-tprocessinfo-2/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 23:51:07 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[ProcessInfo]]></category>
		<category><![CDATA[TProcessInfo]]></category>
		<category><![CDATA[دلفی]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=371</guid>
		<description><![CDATA[I had a few e-mails and comments about using TProcessInfo, so I decided to answer those questions in new blog posts. Q1: How can we find a module which is running a specific thread, giving a thread ID: A: First of all, Threads are not assigned to modules, they are assigned to processes. You can [...]]]></description>
			<content:encoded><![CDATA[<p>I had a few e-mails and comments about using <a href="http://vcldeveloper.com/products/products-components/process-info/" target="_blank">TProcessInfo</a>, so I decided to answer those questions in new blog posts.</p>
<p><strong><span style="color: #ff0000;">Q1</span></strong>: How can we find a module which is running a specific thread, giving a thread ID:</p>
<p><strong>A</strong>: First of all, <span style="text-decoration: underline;">Threads are not assigned to modules</span>, they are assigned to processes. You can find a process which is running the thread, by searching in the list of threads owned by each running process. Here is a sample code:</p>
<pre class="brush: delphi;">
function FindProcessByThreadID(ID: Cardinal): TProcessItem;
var
  ProcessInfo : TProcessInfo;
  AProcess : TProcessItem;
begin
  Result := nil;
  ProcessInfo := TProcessInfo.Create(nil);
  try
    for AProcess in ProcessInfo.RunningProcesses do
    begin
      if Assigned(AProcess.Threads.FindByID(ID)) then
      begin
        Result := AProcess;
        Exit;
      end;
    end;
  finally
    ProcessInfo.Free;
  end;
end;
</pre>
<p>FindProcessByThreadID iterates over all running processes, and checks which of them has a thread with the given ID. If a process owns a thread with that ID, it will return that process as a TProcessItem object.</p>
<p>Once you have the process object, you can get more information about the process or the specific thread, or you can kill the process, or suspend the thread. For example:</p>
<pre class="brush: delphi;">
var
  Process : TProcessItem;
begin
  Process := FindProcessByThreadID(StrToInt(3444));
  if Assigned(Process) then
    ShowMessage(Process.FullPath);
end;
</pre>
<p>The above code looks for a thread with its ID = 3444, and if it is found, it provides full path of the EXE file for that process.</p>
<p><strong><span style="color: #ff0000;">Q2</span></strong>: How can we get memory consumption for a given process?</p>
<p><strong>A</strong>: You can read memory info for a given process using TProcessItem.MemoryInfo. It provides different info about the memory the process is consuming. Here is an example for reading memory info of Google Chrome process while it is running :</p>
<pre class="brush: delphi;">
var
  ProcessInfo : TProcessInfo;
  AProcess : TProcessItem;
begin
  ProcessInfo := TProcessInfo.Create(nil);
  try
    AProcess := ProcessInfo.RunningProcesses.FindByName('Chrome.exe');
    if Assigned(AProcess) then
      ShowMessage(Format('WorkingSet Size = %d, Peak WorkingSet Size = %d',
                         [AProcess.MemoryInfo.WorkingSetSize,
                          AProcess.MemoryInfo.PeakWorkingSetSize]));
  finally
    ProcessInfo.Free;
  end;
end;
</pre>
<p>First we search for Chrome.exe process among running processes. Once the process is found, we read its current working set size, and pick working set size through MemoryInfo property, and show them in a message box. The values returned are in Bytes.</p>
<p><strong><span style="color: #ff0000;">Q3</span></strong>: How can we get process base priority class or change it?</p>
<p><strong>A</strong>: You can access base priority class for a given process or modify it (added in <a href="http://vcldeveloper.com/uncategorized/processinfo-1-3-is-released/" target="_blank">version 1.3</a>), using TProcessItem.</p>
<p>PriorityClassBase. Be careful, adjusting a base priority class of a given process inappropriately might make other processes unresponsive! Here is a example code:</p>
<pre class="brush: delphi;">
var
  ProcessInfo : TProcessInfo;
  AProcess : TProcessItem;
begin
  ProcessInfo := TProcessInfo.Create(nil);
  try
    AProcess := ProcessInfo.RunningProcesses.FindByName('firefox.exe');
    if Assigned(AProcess) then
      AProcess.PriorityClassBase := BELOW_NORMAL_PRIORITY_CLASS;
  finally
    ProcessInfo.Free;
  end;
end;
</pre>
<p>You can also change each priority of  each thread within a process by setting BasePriority property of that TThreadItem instace.</p>
<p><strong><span style="color: #ff0000;">Q4</span></strong>: How can I check if a process is 64-bit?</p>
<p><strong>A</strong>: You can check this by reading TProcessItem.Is64Bits property.</p>
<p><strong><span style="color: #ff0000;">Q5</span></strong>: How can I get CPU usage for a given process?</p>
<p><strong>A</strong>: You can get CPU usage by reading TProcessItem.CPUUsage property.</p>
<p>I hope these few answers and sample source codes can help you use Process Info. For other examples of using Process Info, please refer to this post: <a href="http://vcldeveloper.com/tips-tricks/how-to-use-tprocessinfo/">How to use TProcessInfo</a></p>
<p>If there is any question regarding using Process Info, or anything about Delphi that you think worth being mentioned in Tips &amp; Tricks section of this website, please <a href="http://vcldeveloper.com/contact-me/" target="_blank">contact me</a>, and let me know about it.</p>
<p>Have Fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/tips-tricks/how-to-use-tprocessinfo-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embarcadero and Iran Embargo</title>
		<link>http://vcldeveloper.com/news/embarcadero-and-iran-embargo/</link>
		<comments>http://vcldeveloper.com/news/embarcadero-and-iran-embargo/#comments</comments>
		<pubDate>Tue, 25 May 2010 22:02:23 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Embarcadero]]></category>
		<category><![CDATA[Embargo]]></category>
		<category><![CDATA[Iran]]></category>
		<category><![CDATA[Sanction]]></category>
		<category><![CDATA[USA]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/news/embarcadero-and-iran-embargo/</guid>
		<description><![CDATA[Are you an Iranian Delphi (or C++ Builder, or JBuilder) developer? Have you noticed that while you are in Iran, some pages of Embarcadero website do not load? You might have thought it is your ISP, or maybe Iranian filtering system, or maybe your browser, which are causing the problem, because other visitors are using [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Are you an Iranian <a href="www.embarcadero.com/products/delphi" target="_blank">Delphi</a> (or C++ Builder, or <a href="www.embarcadero.com/products/jbuilder" target="_blank">JBuilder</a>) developer? Have you noticed that while you are in Iran, some pages of Embarcadero <a href="www.embarcadero.com/" target="_blank">website</a> do not load?</p>
<p style="text-align: justify;">You might have thought it is your ISP, or maybe Iranian filtering system, or maybe your browser, which are causing the problem, because other visitors are using the website with no such problems, and nobody has reported such problems. Well, if you thought that way, you are wrong!</p>
<p style="text-align: justify;">It was some months (or maybe a year) ago that I noticed I cannot log into <a href="https://forums.codegear.com/" target="_blank">Embarcadero forums</a> (web interface for their newsgroups). It was telling me that my username\password was not valid! I retried my username\password several times, and even tried to make it to email me my password, but no success! Eventually I decided to create a new username, and tell them about my problem in the forum, but when I was creating the new account, I noticed that Iran is not in Countries list, and I have to choose another country if I want to create an account in their website. It was there that I found out they deleted my previous forum ID without any notification just because Iran was chosen as my country!</p>
<p style="text-align: justify;">Days passed and April 2010 came, I noticed that some Iranian Delphi developers were reporting problems about accessing <a href="http://edn.embarcadero.com/" target="_blank">EDN</a> (Embarcadero Developers Network). <a href="http://edn.embarcadero.com/" target="_blank">EDN</a> provides some articles, news reports, and white papers about Embarcadero products for software developers. I thought it must have been some ISP problems, but since I wasn’t sure, I created a topic in Embarcadero forums, and asked if EDN is down. Some users mentioned they have no problem accessing it in Europe, and later on, my topic got deleted from their forum, and I received an email from one of Embarcadero employees that this is due to their respected company’s policies in complying with US embargo, and I should keep it as a confidential note!</p>
<p style="text-align: justify;">Now it’s been some days (maybe 1 or 2 weeks) that I found out accessing <a href="http://blogs.embarcadero.com/" target="_blank">weblogs</a> belonging to Delphi team members on Embarcadero website, and also <a href="http://docwiki.embarcadero.com/" target="_blank">documents wiki website</a> (online version of Delphi documentation) is not possible from Iran.</p>
<p style="text-align: justify;">So, if you use any of Embarcadero products (either buying it legally or not) and you travel to Iran for a visit or live in Iran, you are not allowed to check their website, their weblogs, or their online documentations, put aside downloading trial versions or updates from their website! OK, they say it is so to comply with US embargo against Iran, but it is weird, as far as I know, when someone does something nice and according to law, they must be usually proud of it, but Embarcadero is not (!!) because they do not like you to know that they put such restrictions on some people; they do not bother redirecting you to a page saying this content is not available to you due to US embargo. They rather you think it is a server or Internet connection issue, not an organized restriction imposed by the company. That’s why you don’t see any explanation from them, or you do not receive any notifications when your accounts are removed from their website, or your post gets deleted when you ask them about it in their forums.</p>
<p style="text-align: justify;">It is also interesting to know why they are restricting access to such contents as online help or their employees weblogs? Because if they are following US laws, then banning product downloads from Iranian IP ranges should be enough. Why banning access to developers’ weblogs or online help documentations?! Companies like Google, Oracle, or Yahoo impose restrictions on downloading their products to Iranians too; for example you cannot directly download Google Chrome, or Yahoo Messenger from Iran, but they do not restrict their employees weblogs, or announcements for new coming products. Actually it seems Embarcadero likes ambiguity, as they expressed this interest in their published roadmap which was more confusing than clarifying. You can read about it more <a href="/news/my-view-on-new-delphi-roadmap/" target="_blank">here</a>.</p>
<p style="text-align: justify;">Maybe the reason Embarcadero decided to ban their website content on Iranians was popularity of Delphi in Iran, and they thought making such restrictions make Iranian people feel the pressure more, and as you might know, US government believes such stupid pressures will eventually lead to people uprising in Iran, and making the country to agree with US demands! I know you might say nowadays Delphi’s popularity is not as before, and Visual Studio and .NET are currently the most popular development tools there, but so far Microsoft hasn’t imposed so called US embargo on Iran that way; that is they do not sell their products in Iran, but they haven’t banned MSDN or their download pages, or their online services for Iranians yet. So if they are supposed to put pressure, why not restricting Microsoft contents in Iran? Maybe Microsoft is kept for later stages of pressure on Iranian people, or maybe they are afraid if they ban very popular websites or tools, the result might get reversed, and people might feel more enmity toward US government.</p>
<p style="text-align: justify;">BTW, If you are a software developer in Iran, you already know how to nullify so-called US sanctions; so I didn’t go for explaining how to do so! <img src='http://vcldeveloper.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align: justify;">I have a lot to say about US embargo against Iran, that I think I should write about in another post some other time.</p>
<p style="text-align: justify;">Have Fun!</p>
<p style="text-align: justify;">P.S. 1. Today (May 26, 2010) I tried to read Craig Stuntz’s <a href="http://blogs.teamb.com/craigstuntz/2010/05/25/38608/" target="_blank">blog post</a> on TeamB website, and this site makes the same restrictions on Iranians as official EDN website. So you can add <a href="http://www.teamb.com/" target="_blank">TeamB</a> to the list too.</p>
<p style="text-align: justify;">P.S.2. Today (June 18, 2010) I found out <a href="https://forums.codegear.com/" target="_blank">Embarcadero forums</a> are added to the restricted websites too. If Embarcadero had took developing their products as seriously as they took banning Iranian users, they would have probably had better products by far!</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/news/embarcadero-and-iran-embargo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My View on New Delphi Roadmap</title>
		<link>http://vcldeveloper.com/news/my-view-on-new-delphi-roadmap/</link>
		<comments>http://vcldeveloper.com/news/my-view-on-new-delphi-roadmap/#comments</comments>
		<pubDate>Thu, 13 May 2010 09:47:45 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Roadmap]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=266</guid>
		<description><![CDATA[Embarcadero published a new roadmap for Delphi on May 10. You can see the new roadmap here. I don’t know if we can call it a roadmap or not. It does not give any time schedule or estimation on when each mentioned feature might be available (except a rough estimation for 64-bit compiler preview availability [...]]]></description>
			<content:encoded><![CDATA[<p>Embarcadero published a new roadmap for <a href="www.embarcadero.com/products/delphi" target="_blank">Delphi</a> on May 10. You can see the new roadmap <a href="http://edn.embarcadero.com/article/39934" target="_blank">here</a>.</p>
<p>I don’t know if we can call it a roadmap or not. It does not give any time schedule or estimation on when each mentioned feature might be available (except a rough estimation for 64-bit compiler preview availability in the first half of 2011). To me, the published roadmap does not clear any ambiguity regarding Delphi future. It just adds more to it! Really, what was the purpose of publishing this?! Maybe just to  muffle those Delphi users who were complaining about not having any updated roadmap.</p>
<p>Now, let’s take a look at this so-called roadmap…</p>
<p><span id="more-266"></span></p>
<p>I skip those unnecessary slides which say the focus of product in future is on this or that, because as far as I know, almost all RAD development tools focus on stuff like better performance, Rich GUI, Cutting-edge data access, and so on. So to me, such pages don’t add anything to reader’s knowledge about the product.</p>
<p>Then in page 8, we see the the projects R&amp;D team are working on:</p>
<ul>
<li>Fulcrum</li>
<li>Wheelhouse</li>
<li>64-bit compiler preview</li>
<li>Commodore</li>
<li>Chromium</li>
</ul>
<p>According to other pages in the roadmap, and what we already heard from Delphi team, there are teams working on these projects in parallel. This is good that they are working on these projects in parallel, but that adds some more ambiguity, because you don’t know what features of which project will be available in each release. For example Chromium is the last project in the list, and one of the features it will focus on is documenting OTA. Since the works are done in parallel, then they might finish documenting OTA while the main focus is on the Fulcrum or Wheelhouse or Commodore. So you might see OTA documentation released with one of the earlier projects. It can be taken the other way too, you might see a feature in Fulcrum or Wheelhouse projects not being ready at the time they are supposed to be, and postponed to Commodore or Chromium, or post-chromium release!</p>
<p>So you have no time frame, and no info when each mentioned feature is supposed to be released. Your desired feature might come into product in a few months to a couple of years (maybe even more, who knows?). I don’t know why Embarcadero likes to be so ambiguous!</p>
<h3>Project Fulcrum</h3>
<p>The main focus right now is on project Fulcrum. It is said that Fulcrum is currently in private Beta phase, and will be available as public Beta some time soon, and will probably go Final in summer. According to the roadmap, the main theme of Fulcrum is building cross-platform applications. The old roadmap was mentioning Windows, Linux, and Mac OS X, but the new roadmap only talks about Windows and Mac OS X. There is no Linux. Linux support is postponed to Wheelhouse project. It is not clear if at least building console applications in Linux is supported in Fulcrum. But it is clear that even Mac OS X support is about client applications in Fulcrum, and you can’t use technologies like DataSnap servers in Mac OS X until project Wheelhouse is released. So again Embarcadero is proving that they are not good at setting  project goals, and estimating projects. As we saw with 64-bit compiler, Linux support will not be available on time, and is going to be postponed. It might be available very soon after Fulcrum release, or it might go the same path 64-bit compiler went, and be postponed for a couple of years. No one knows.</p>
<p>Beside its main theme, Fulcrum is supposed to bring some other features to RAD Studio. First of all, it is mentioned it will provide remote debugging for Mac OS X. I don’t know why is this mentioned here because when they mention they are going to target Mac OS X platform, then they either provide a Mac-based IDE, or a Windows-based IDE cross-compiling for Mac OS X. They took the second approach, and with that, it is obvious that they should provide a remote debugging mechanism. It is a must-have feature for a cross-compiling tool, not a subsidiary feature.</p>
<p>Then we have “Cross-platform VCL-like component library. According to <a href="http://blogs.embarcadero.com/michaelrozlog/" target="_blank">Michael Rozlog</a> in his interview with <a href="http://www.delphi.org/" target="_blank">Jim McKeeth</a> for <a href="http://www.delphi.org/2010/02/michael-rozlog/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+DelphiDotOrg%2FPodCast+%28Podcast+at+Delphi.org%29" target="_blank">Delphi Podcast #37</a>, this cross-platform component library is a continuation of <a href="http://delphi.wikia.com/wiki/CLX" target="_blank">CLX</a> library which was a wrapper for <a href="http://qt.nokia.com/" target="_blank">Qt</a> GUI framework back in Delphi 6 and Delphi 7. There are no further details about this CLX based component framework except that again according to Michael Rozlog, most of old CLX based Delphi applications should be able to upgrade to this new framework easily, putting aside Unicode migration which is a different story.</p>
<p>The other feature which is supposed to be available in project Fulcrum is better integration with version control software, specially Subversion. It seems OTA is extended to provide a better version control support, and a SVN integration extension will be published with RAD Studio using the new OTA features. According to <a href="http://blogs.embarcadero.com/nickhodges/" target="_blank">Nick Hodges</a> in <a href="http://www.delphi.org/2010/05/40-nick-hodges-part-1/" target="_blank">Delphi Podcast #40</a>, this SVN extension is based on open-source <a href="http://sourceforge.net/projects/delphisvn/" target="_blank">DelphiSVN</a> project, and will be published as an open-source tool. The good thing about this new feature is that it will be integrated into History tab of code editor. It seems cool!</p>
<p>Another feature in project Fulcrum is supporting UML Sequence diagrams. That’s good, but well it’s been a while that I use Model Maker for modeling. I do admit that modeling support in RAD Studio 2010 is also very cool.</p>
<p>Next feature is Automatic unit test generation. This is another unclear feature. What is this feature supposed to do?  Automatic unit test generation is already integrated into Delphi using DUnit. What extra stuff is this feature supposed to bring to RAD Studio?</p>
<p>Again another unclear feature is “RESTful Server creation”. This is already provided in RAD Studio 2010, and it is not clear what other stuff regarding to RESTful servers are going to come with project Fulcrum. I think Embarcadero should had gone into more details with these two features in their roadmap.</p>
<p>And the last feature mentioned in project Fulcrum is supporting <a href="http://en.wikipedia.org/wiki/Cloud_computing" target="_blank">cloud computing</a> by providing <a href="http://en.wikipedia.org/wiki/Azure_Services_Platform" target="_blank">Microsoft Azure</a> integration, which is a nice addition to project Fulcrum.</p>
<h3>Project Wheelhouse</h3>
<p>Project Wheelhouse is supposed to bring full Linux support to RAD Studio. It will also complete Mac OS X support by providing server side support on both Linux and Mac OS X along with Windows.</p>
<h3>64-bit Compiler Preview</h3>
<p>64-bit support will not come to RAD Studio sooner than the first half of 2011. Even at that time, you will have a command-line only compiler preview. It is not clear how this compiler preview is going to be shipped; Are Embarcadero going to release a new Delphi version in 1st half of 2011? Or are they supposed to release this compiler preview as an update? As far as I know, they do not ship new features in updates, and usually RAD Studio is released once per year.</p>
<h3>Project Commodore</h3>
<p>I’m not going to spend that much time on project Commodore and Chromium, because they seem far away, and probably will see many changes in future. Project Commodore is supposed to bring full 64-bit compiler support. If you follow Delphi news, then you probably know project Commodore from previous Delphi roadmaps. It’s been a couple of years that Commodore is there on the roadmap. According to previous roadmaps, we should have had it in 2010, but now according to the current roadmap, it is at least 1.5 to 2 years away from us.</p>
<p>Better multi-core support, and Delphi Parallel Library are other features being worked on in project Commodore. I hope we see DPL sooner; because within 2 years a parallel library wouldn’t be considered as an advantage, but a must-have feature. So it wouldn’t be an advertising point for Embarcadero in 2012 to say, hey we also have this cool parallel library in our product!</p>
<p>Social Networking Integration is another feature for Commodore. Again this is a cool feature if delivered on time, otherwise it wouldn’t make any advantage for Delphi.</p>
<p>And the last feature mentioned for project Commodore is  Better Documentation. I hope they don’t mean people should wait at least 2 years to have better documentation in RAD Studio! It seems this is one of those features that we probably will see sooner, because as we saw in RAD Studio 2010 documentation, the documentation team is working hard to provide better documents in each release, and even with help updates.</p>
<h3>Project Chromium</h3>
<p>Well, this one looks so far away. This project is supposed to enable Delphi target other hardware platforms rather than Intel X86. Specially mobile platforms. It is also supposed to provide better support for other natural inputs (beside gesture and touch) like voice, video motion, and location (probably supporting GPS in mobile devices). These stuff are cool, but it is not clear or even estimated when such things are supposed to be provided.</p>
<p>Some other features in project Chromium are already being worked on, and we see their progress in each release; like improving look &amp; feel of VCL controls, and IDE, or more integration with database tools. I also expect OTA documentation to be available sooner than other features in this project, and I guess we will see it in the next release or the release after next release (This is just an assumption).</p>
<p>DataSnap (Adaptive) Application Server, and Extended RIA Approach are also mentioned in Project Chromium, but again they lack any detailed specifications.</p>
<p>So it was my take on the newly published document, called roadmap, by Embarcadero. If you want to make any estimated plan for your carrier with Delphi, this document is, to me, quiet useless, and doesn’t really give you any insight.</p>
<h3>Entry-level SKU</h3>
<p>As you might know, one of the recent hot debates in Delphi community was around Embarcadero providing a free or cheap entry-level SKU for RAD Studio. Michael Rozlog mentioned in his Delphi Podcast #37 that they are working on it, and probably we will see that in next major release which is project Fulcrum.</p>
<p>But according to Nick Hodges in Delphi Podcast #40, they haven’t made their mind yet, and it is not still clear how this entry-level SKU would be. But something is clear; a free version is not on the table anymore. They are just working on a cheap entry-level SKU which its specifications are still unclear. So we won’t see free Delphi anymore!</p>
<p>I hope at least they provide the command-line compiler free, and make it available in all three major platforms they are going to support (Windows, Linux, Mac OS X). This way hobbyists and students could use a free editor like <a href="http://sourceforge.net/projects/notepad-plus/" target="_blank">NotePad++</a> and write Delphi code on their preferred platform for free.</p>
<p>Regards</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/news/my-view-on-new-delphi-roadmap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ProcessInfo 1.2 is released</title>
		<link>http://vcldeveloper.com/news/processinfo-1-2-is-released/</link>
		<comments>http://vcldeveloper.com/news/processinfo-1-2-is-released/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 18:45:31 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ProcessInfo]]></category>
		<category><![CDATA[TAppInfo]]></category>
		<category><![CDATA[TProcessInfo]]></category>
		<category><![CDATA[دلفی]]></category>
		<category><![CDATA[کامپوننت]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=250</guid>
		<description><![CDATA[Hi, ProcessInfo 1.2 is released. The changes in this release are: SuspendThread, ResumeThread, TerminateThread methods are added to TThreadItem class. Now you can pause/resume/terminate any running thread in a given process. TProcessInfo.Active and TAppInfo.Active are published properties, and can be set in design mode. TProcessInfo.RunningProcesses and TAppInfo.RunningApplications automatically populate the corresponding list if UpdateList method [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hi,</p>
<p style="text-align: justify;">ProcessInfo 1.2 is released. The changes in this release are:</p>
<ul style="text-align: justify;">
<li>SuspendThread, ResumeThread, TerminateThread methods are added to TThreadItem class. Now you can pause/resume/terminate any running thread in a given process.</li>
<li>TProcessInfo.Active and TAppInfo.Active are published properties, and can be set in design mode.</li>
<li>TProcessInfo.RunningProcesses and TAppInfo.RunningApplications automatically populate the corresponding list if UpdateList method is not called yet. This means even if you don&#8217;t activate any of these two components, or call their UpdateList method, accessing RunningProcesses or RunningApplications does not cause Access Violation.</li>
</ul>
<p style="text-align: justify;">To download ProcessInfo 1.2, please go to <a href="../products/products-components/process-info/">ProcessInfo</a> page.</p>
<p style="text-align: justify;">Regards.</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/news/processinfo-1-2-is-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Component Toolbar slows down RAD Studio 2010</title>
		<link>http://vcldeveloper.com/tips-tricks/component-toolbar-slows-down-rad-studio-2010/</link>
		<comments>http://vcldeveloper.com/tips-tricks/component-toolbar-slows-down-rad-studio-2010/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 19:04:01 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Component Toolbar]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi 2010]]></category>
		<category><![CDATA[RAD Studio 2010]]></category>
		<category><![CDATA[دلفی]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=237</guid>
		<description><![CDATA[In RAD Studio 2010 there is a new IDE feature called Component Toolbar. This feature provides a component palette similar to the old Delphi component palette. Component Toolbar in RAD Studio 2010 This toolbar provides a nice search box which is able to filter components in the palette based on the search phrase. This toolbar [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">In <a title="RAD Studio 2010" href="http://www.embarcadero.com/products/rad-studio" target="_blank">RAD Studio 2010</a> there is a new IDE feature called Component Toolbar. This feature provides a component palette similar to the old Delphi component palette.</p>
<p style="text-align: justify;">
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_241" class="wp-caption alignnone" style="width: 540px;">
<dt class="wp-caption-dt"><a href="http://vcldeveloper.com/wp-content/uploads/2010/01/component_toolbar.png"><img class="size-full wp-image-241 " title="Component Toolbar" src="http://vcldeveloper.com/wp-content/uploads/2010/01/component_toolbar.png" alt="Component Toolbar" width="530" height="55" /></a></dt>
<dd class="wp-caption-dd">Component Toolbar in RAD Studio 2010</dd>
</dl>
</div>
<p style="text-align: justify;">
<p style="text-align: justify;">This toolbar provides a nice search box which is able to filter components in the palette based on the search phrase. This toolbar is disabled by default, and is shown when Classic Layout is selected. Here you can see a snapshot of Classic Layout in RAD Studio 2010:</p>
<p style="text-align: justify;">
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_242" class="wp-caption alignnone" style="width: 630px;">
<dt class="wp-caption-dt"><a href="http://vcldeveloper.com/wp-content/uploads/2010/01/classic_ide_delphi2010.png"><img class="size-full wp-image-242  " title="classic_ide_delphi2010" src="http://vcldeveloper.com/wp-content/uploads/2010/01/classic_ide_delphi2010.png" alt="" width="620" height="323" /></a></dt>
<dd class="wp-caption-dd">Classic Layout in Delphi 2010</dd>
</dl>
</div>
<p style="text-align: justify;">
<p style="text-align: justify;">A few weeks ago while I was working with Delphi 2010, I noticed a delay when switching from code view to form designer. The delay was there not only in the complex forms, but also in simple empty forms! It was not a big delay (about 1 second), but since I had to switch between code and form designer view many times, it was really annoying, so I decided to investigate it and find out what is causing this delay.</p>
<p style="text-align: justify;"><span id="more-237"></span>At first I got suspected to <a title="CnPack" href="http://www.cnpack.org/" target="_blank">CnPack</a> toolbars in form designer and code view, so I disabled them, but it had no effect on the delay!  Then I went for <a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx" target="_blank">SysInternals Process Monitor</a> to monitor RAD Studio while switching from code view to form designer. There were many Registry activities regarding to component toolbar. At that time I was thinking about standard Tool Palette in RAD Studio 2010, not the classic component toolbar, because I was not using classic layout.</p>
<p style="text-align: justify;">I tried to hide Tool Palette to see if it fixes the delay, but it didn&#8217;t! So I decided to disable its IDE package and see if it fixes the issue. While I was looking into the list of IDE packages in Registry, I found Component Toolbar Package, and I thought this is the package corresponding to Tool Palette. So I removed it from the list of known IDE packages, and restarted RAD Studio 2010; the Tool Palette was still there, BUT the switching delay was gone!</p>
<p style="text-align: justify;">I was wondering if Component Toolbar was not related</p>
<p style="text-align: justify;">to Tool Palette, then what was it related to?! Suddenly I remembered the new classic component toolbar, and switched to Classic Layout. Yes, it was the new classic component toolbar which was using Component Toolbar Package!</p>
<p style="text-align: justify;">Since I don&#8217;t use classic view, I simply disabled this IDE package to have a faster switch time from code view to form designer. But still it is weird why this toolbar is being update even when it is not being visible, and why it is making switching from code view to form designer slower. This is definitely a bug in RAD Studio 2010.</p>
<h2 style="text-align: justify;">How to disable an IDE package:</h2>
<p style="text-align: justify;">Here is how you can disable Component Toolbar Package from Registry:</p>
<p style="text-align: justify;">1- Go to<strong> HKEY_CURRENT_USER\Software\CodeGear\BDS\7.0\Known IDE Packages</strong>.</p>
<p style="text-align: justify;">2- Make a backup by right-clicking on &#8220;Known IDE Packages&#8221; key, and selecting  Export.</p>
<p style="text-align: justify;">3- Find &#8220;<span style="text-decoration: underline;">$(BDS)\bin\comptoolbar140.bpl</span>&#8221; value in &#8220;Known IDE Packages&#8221; key, and delete it.</p>
<p style="text-align: justify;">4- Run RAD Studio 2010.</p>
<p style="text-align: justify;">Regards</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/tips-tricks/component-toolbar-slows-down-rad-studio-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chad Hower of Indy fame is arrested!</title>
		<link>http://vcldeveloper.com/news/chad-hower-arrested/</link>
		<comments>http://vcldeveloper.com/news/chad-hower-arrested/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 01:32:17 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Chad Hower]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Indy]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=224</guid>
		<description><![CDATA[Today I saw a new blog post on Kudzu(Chad Hower)&#8217;s RSS feed, with this weird title: &#8220;Arrested in Bulgaria on False Charges&#8221; At first I thought it is just a joke, but then I realized it isn&#8217;t It seems Chad is in trouble for his son&#8217;s custody. He&#8217;s been accused of kidnapping his own son [...]]]></description>
			<content:encoded><![CDATA[<p>Today I saw a new blog post on Kudzu(<a href="http://www.kudzuworld.com/Bio.EN.aspx">Chad Hower</a>)&#8217;s RSS feed, with this weird title: &#8220;<strong><a href="http://www.kudzuworld.com/Help/index.EN.aspx">Arrested in Bulgaria on False Charges</a></strong>&#8221;</p>
<p>At first I thought it is just a joke, but then I realized it isn&#8217;t <img src='http://vcldeveloper.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  It seems Chad is in trouble for his son&#8217;s custody. He&#8217;s been accused of kidnapping his own son and traveling to Bulgaria with him in 2006!</p>
<p>Anybody having some experiences with <a title="Delphi" href="http://www.embarcadero.com/products/delphi">Delphi</a> programming knows Chad, and his great open-source project; <a href="http://www.indyproject.org">Indy Project</a>.</p>
<p>I hope his problem is solved soon. He asked for help, and I think all Delphi developers who are using Indy have to at least spread the word, or if they can, help him financially to get out of this trouble.</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/news/chad-hower-arrested/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ProcessInfo 1.1 is released</title>
		<link>http://vcldeveloper.com/news/processinfo-1-1-is-released/</link>
		<comments>http://vcldeveloper.com/news/processinfo-1-1-is-released/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 05:45:15 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ProcessInfo]]></category>
		<category><![CDATA[TAppInfo]]></category>
		<category><![CDATA[TProcessInfo]]></category>
		<category><![CDATA[دلفی]]></category>
		<category><![CDATA[کامپوننت]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=202</guid>
		<description><![CDATA[Hi, I released a new version of ProcessInfo. In this release I added these features: Enumerators are added for Windows, Threads, Modules, and Processes; Now you can use for-in statements in D2007 and above for iterating on running processes list, or modules\threads\windows of a given process. TProcessItem.UserName is added; This property returns domain name\user name [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>I released a new version of ProcessInfo. In this release I added these features:</p>
<ul>
<li> Enumerators are added for Windows, Threads, Modules, and Processes; Now you can use for-in statements in D2007 and above for iterating on running processes list, or modules\threads\windows of a given process.</li>
<li> TProcessItem.UserName is added; This property returns domain name\user name which is running the process.</li>
<li> TProocessInfo.AdjustDebugPrivilage is added; This method is called automatically.<br />
TThreadItem.ToString &amp; TProcessItem.ToString are added; TThreadItem.ToString returns ThreadID. TProcess.ToString returns process EXE name.</li>
<li> Now supports Delphi 7,2007,2009, 2010; Some conditional compiler directives are added so that it can be used in D7, 2007, 2009, and 2010. I tested it in D7, 2009, and 2010. It should work in D2007 too.</li>
</ul>
<p>To download ProcessInfo 1.1, please go to <a href="../products/products-components/process-info/">ProcessInfo</a> page.</p>
<p>Regards.</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/news/processinfo-1-1-is-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to use TProcessInfo</title>
		<link>http://vcldeveloper.com/tips-tricks/how-to-use-tprocessinfo/</link>
		<comments>http://vcldeveloper.com/tips-tricks/how-to-use-tprocessinfo/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 15:08:29 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Process Info]]></category>
		<category><![CDATA[TProcessInfo]]></category>
		<category><![CDATA[دلفی]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=173</guid>
		<description><![CDATA[The other day I published Process Info component pack which contains TProcessInfo and TAppInfo. A sample task manager was also published as demo. I thought maybe it is a good idea to talk about these components and some of their usages by providing some sample source codes. So I will start with TProcessInfo. Updating running [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I published <a href="http://vcldeveloper.com/products/products-components/process-info/" target="_blank">Process Info component</a> pack which contains TProcessInfo and TAppInfo. A sample task manager was also published as <a title="Download ProcessInfo + Demo" href="http://vcldeveloper.com/downloads/ProcessInfo.zip" target="_blank">demo</a>.</p>
<p>I thought maybe it is a good idea to talk about these components and some of their usages by providing some sample source codes. So I will start with TProcessInfo.</p>
<p><span id="more-173"></span></p>
<h3>Updating running processes list automatically</h3>
<p>TProcessInfo has an internal timer which can update processes list automatically. This timer is controlled by Active, and UpdateInterval properties. Active activates the internal timer, and UpdateInterval specifies update interval. The default value for UpdateInterval is 1000 (1 second).</p>
<p>To update the list manually, and not using the internal timer, you can call UpdateList method.</p>
<h3>OnBeforeUpdate and OnAfterUpdate</h3>
<p>TProcessInfo has two events. They both are invoked when UpdateList is called, either automatically by internal timer or manually by the programmer.</p>
<p>OnBeforeUpdate is invoked just before updating the list. It has a Cancel parameter which lets you to cancel updating. OnAfterUpdate is invoked when the list is updated. So if you have a control (e.g. a list view) that should show processes list, you can write its updating code in the event-handler of OnAfterUpdate.</p>
<h3>Finding a running process</h3>
<p>You can iterate over all running processes to find a specific process with specific characteristics, or use FindByID, and FindByName methods to find a process by its Process ID or Process Name:</p>
<pre class="brush: delphi;">
var
  Process : TProcessItem;
begin
  Process := ProcessInfo1.RunningProcesses.FindByID(1234);
  if not Assigned(Process) then
    ShowMessage('No process found');
end;
</pre>
<p>Finding a process by its Process ID.</p>
<pre class="brush: delphi;">
var
  Process : TProcessItem;
begin
  Process := ProcessInfo1.RunningProcesses.FindByName('Project3.exe');
  if not Assigned(Process) then
    ShowMessage('No process found');
end;
</pre>
<p>Finding a process by its Process Name.</p>
<pre class="brush: delphi;">
var
  I: Integer;
  MemSize,
  MaxMemSize : Cardinal;
  ProcessName : string;
begin
  MaxMemSize := 0;
  for I := 0 to ProcessInfo1.RunningProcesses.Count - 1 do
  begin
    MemSize := ProcessInfo1.RunningProcesses[i].MemoryInfo.WorkingSetSize;
    if MemSize &gt; MaxMemSize then
    begin
      MaxMemSize := MemSize;
      ProcessName := ProcessInfo1.RunningProcesses[i].ExeFile;
    end;
  end;
  ShowMessage(ProcessName + ‘uses more memory than other processes.’);
end; </pre>
<p>Finding the process which consumes more memory than others.</p>
<h3>Terminating a running process</h3>
<p>To terminate a running process, you should first find it in the list of running processes, and then call its TerminateProcess method:</p>
<pre class="brush: delphi;"> var
  Process : TProcessItem;
begin
  Process := ProcessInfo1.RunningProcesses.FindByName('notepad.exe');
  if Assigned(Process) then
    Process.TerminateProcess;
end;
</pre>
<h3>Retrieving full path of a process</h3>
<pre class="brush: delphi;"> var
  Process : TProcessItem;
begin
  Process := ProcessInfo1.RunningProcesses.FindByName('notepad.exe');
  if Assigned(Process) then
    ShowMessage(Process.FullPath);
end;
</pre>
<h3>Listing modules which a process loaded</h3>
<pre class="brush: delphi;"> var
  Process : TProcessItem;
  I: Integer;
begin
  Process := ProcessInfo1.RunningProcesses.FindByName('Project1.exe');
  if  Assigned(Process) then
  begin
    for I := 0 to Process.Modules.Count - 1 do
      Memo1.Lines.Add(Format('%d  : %s',[Process.Modules[i].BaseAddress,
                                         Process.Modules[i].ModuleName]));
  end;
end;
</pre>
<p>You can access other information about a process (e.g. Threads list, threads count, memory consumption, and so on) in the same way.<br />
TAppInfo works very similar to TProcessInfo. I will try to explain it more with some examples in another article.</p>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/tips-tricks/how-to-use-tprocessinfo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Process Info</title>
		<link>http://vcldeveloper.com/products/products-components/process-info/</link>
		<comments>http://vcldeveloper.com/products/products-components/process-info/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 00:57:50 +0000</pubDate>
		<dc:creator>Ali Keshavarz</dc:creator>
				<category><![CDATA[Components]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ProcessInfo]]></category>
		<category><![CDATA[TAppInfo]]></category>
		<category><![CDATA[TProcessInfo]]></category>
		<category><![CDATA[دلفی]]></category>
		<category><![CDATA[کامپوننت]]></category>

		<guid isPermaLink="false">http://vcldeveloper.com/?p=163</guid>
		<description><![CDATA[Process Info is a free Delphi component package containing two components: TProcessInfo TAppInfo TProcessInfo provides a list of running processes. TAppInfo provides a list running applications (similar to Application tab in Windows Task Manager). Both components can update their list frequently based on the value of Interval property. TProcessInfo returns a collection of TProcessItem objects. [...]]]></description>
			<content:encoded><![CDATA[<div dir="ltr">
<p style="text-align: left;">Process Info is a free <a href="http://www.embarcadero.com/products/delphi">Delphi</a> component package containing two components:</p>
<ul>
<li>TProcessInfo</li>
<li>TAppInfo</li>
</ul>
<p style="text-align: left;">TProcessInfo provides a list of running processes. TAppInfo provides a list running applications (similar to Application tab in Windows Task Manager). Both components can update their list frequently based on the value of Interval property.</p>
<p style="text-align: left;"><span id="more-163"></span></p>
<p style="text-align: left;"><span style="text-decoration: underline;"><strong>TProcessInfo </strong></span>returns a collection of TProcessItem objects. Each instance of TProcessItem provides these information and actions for the process:</p>
<ul style="text-align: left;">
<li>Creation time</li>
<li>Kernel time</li>
<li>User time</li>
<li>EXE file name</li>
<li>Full image path</li>
<li>Process ID</li>
<li>Parent process ID</li>
<li>Terminate process</li>
<li>Threads count</li>
<li>UserName</li>
<li><strong>Modules list (TModuleItem)</strong>
<ul>
<li>Base address</li>
<li>Base size</li>
<li>Handle</li>
<li>Load count</li>
<li>Module ID</li>
<li>Module path</li>
<li>ProcessID</li>
</ul>
</li>
<li><strong>Threads list (TThreadItem)</strong>
<ul>
<li>Base priority</li>
<li>Parent process ID</li>
<li>Resume thread</li>
<li>Suspend thread</li>
<li>Terminate thread</li>
<li>Thread ID</li>
</ul>
</li>
<li><strong>Memory info (TMemoryInfo)</strong>
<ul>
<li>Page Fault Count</li>
<li>Peak Working Set Size</li>
<li>Working Set Size</li>
<li>Quota Peak Paged Pool Usage</li>
<li>Quota Paged Pool Usage</li>
<li>Quota Peak Non-paged Pool Usage</li>
<li>Quota Non-paged Pool Usage</li>
<li>Page file Usage</li>
<li>Peak Page file Usage</li>
</ul>
</li>
<li>Base priority</li>
</ul>
<p style="text-align: left;">
<p style="text-align: left;"><span style="text-decoration: underline;"><strong>TAppInfo </strong></span>returns a collection of TWindowItem. Each instance of TWindowItem provides these information for the window:</p>
<ul style="text-align: left;">
<li>Window caption</li>
<li>Application path</li>
<li>Process ID</li>
<li>Window handle</li>
<li>Window class</li>
</ul>
<p style="text-align: left;">A simple demo is also included which shows basic functionalities of TProcessInfo, and TAppInfo by creating a simple task manager. Demo is tested on Delphi 7, Delphi 2009, and Delphi 2010.</p>
<p style="text-align: left;">Process Info is published under the <a href="http://creativecommons.org/licenses/by/3.0/" target="_blank">Creative Commons Attribution 3.0 Unported License</a>.</p>
<h3 style="text-align: left;">Update:</h3>
<ul>
<li>2010/07/26: <a href="http://vcldeveloper.com/uncategorized/processinfo-1-3-is-released/"><strong>Version 1.3</strong></a></li>
<li>2010/01/13: <a href="http://vcldeveloper.com/news/processinfo-1-2-is-released/"><strong>Version 1.2</strong></a></li>
<li><span style="text-decoration: underline;">2009/10/17</span>: <a href="http://vcldeveloper.com/news/processinfo-1-1-is-released/"><strong>Version 1.1</strong></a></li>
</ul>
<p style="text-align: left;">
<p style="text-align: left;">
<h2>Download:</h2>
<p class="download"><a href="/downloads/ProcessInfo.zip">Download Process Info (Source + Demo)</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://vcldeveloper.com/products/products-components/process-info/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
