Welkom op het developersblog van 4DotNet
Op dit developersblog zullen onze eigen ontwikkelaars hun praktijkervaringen en andere inseressante onderwerpen plaatsen.

Archief van 'Windows'

Andre Mussche

Als je een applicatie maakt dat moet draaien via een WLAN (Wifi), pas dan even op en lees het onderstaande door:

Windows laadt namelijk niet de gehele executable in het geheugen, maar alleen wat hij op dat moment nodig heeft. Als je bijv. op een knop in je applicatie drukt, dan *kan* Windows een nieuw blok bitjes van je applicatie via het netwerk moeten ophalen (of voor een resource (bijv. een icon) bij een nieuw scherm dat je aanmaakt, etc).
Echter, als je via een WLAN werkt, dan kan natuurlijk net je verbinding weg zijn…
Wat er dan gebeurt? Een “External exception C0000006″ :-(
Oplossing? Je moet een flag in je exe zetten, die aangeeft dat je vanaf een removeable medium werkt (USB, Wifi, etc) zodat Windows wel alles inlaadt. In Delphi kun je dit in de .dpr doen:
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}

Dit heeft bij mijn huidige klant nogal voor wat hoofdbrekens gezorgd: we kregen deze exceptions op de meest vreemde plaatsen, zonder aanwijsbare bug in de code. Na wat googlen was de oorzaak gauw gevonden en de fix snel gemaakt :-) Zie originele discussie + oplossing:
Andre Mussche

Soms wordt je onaangenaam verrast: je meet de tijd van alle SQL queries in je programma met “MillisecondsBetween” en je krijgt als resultaat: 0, 0, 0, en 15ms…

Hmmm, dit is te mooi om waar te zijn, zo snel is MS SQL Server nou ook weer niet! :-)
Er ging bij mij toen wel een lampje branden, ik eens eerder zoiets gezien met “Sleep” en “GetTickCount”.
Rene Kapitein

Registry File

De laatste tijd ben ik weer regelmatig bezig met het maken van kleine aanpassingen in bestaande Visual Basic 6 applicaties. Ik heb daarbij vaak heel veel vensters met code geopend. CTRL + F4 dan maar om alles af te sluiten. Het is daarbij vervelend dat je in VB6 niet bij de instellingen kunt opgeven dat je het venster met code maximaal wilt vergroten. Het schijnt dat VB5 deze optie nog wel had.

Niet voor één gat te vangen, vond ik de registry instelling waarmee je deze vergeten optie zelf kunt instellen. Ik dacht dit even snel te doen met uitvoeren –> regedit.


Lees verder…

Rene Kapitein

distributiegroepen in Outlook

Stel je hebt net als ik een lijst met contactpersonen in Outlook en maakt dankbaar gebruik van de distributiegroepen.  Het is dan niet denkbeeldig dat er eens een vraag komt van iemand die dezelfde distributiegroepen ook wil gebruiken. Denk bijvoorbeeld aan een groep collega’s of een overzicht van commissies.

Omdat mijn Outlook contactpersonen gesynchroniseerd worden met de contactpersonen in mijn mobiele telefoon, staan privé en zakelijke personen door elkaar.  De zakelijke distributiegroepen en de bijbehorende e-mail adressen wilde ik wel delen. De personen die alleen voor mij interessant zijn, hoef ik niet te delen.

Voor ‘normale’ contactpersonen heeft Microsoft diverse exportmogelijkheden. Je kunt alles naar een bestand exporteren en in dit bestand gaan filteren. Voor distributiegroepen is er volgens mij maar één manier die echt goed werkt en dat is export naar een .pst bestand. Een .pst bestand gebruik je ook wanneer je een backup wilt maken of wanneer je het geluk hebt dat je een nieuwe computer mag inrichten. Om snel een .pst bestand te krijgen met alleen de relevante zakelijke contactpersonen en distributiegroepen, heb ik de volgende methode toegepast.


Lees verder…

Windows 7

Ik gebruik thuis al anderhalf jaar Vista en het beste wat je daar eigenlijk over kunt zeggen is dat het wel went…

Afgelopen weekend maar eens de Windows 7 beta geinstalleerd (op een wat oudere laptop). En dit is nou Vista zoals het had moeten zijn, daar is iedereen het wel over eens.

Er is al veel over geschreven maar ik zal toch proberen een korte samenvatting te geven:

  • Het voelt allemaal net wat vlotter aan dan Vista
  • Het device-driver systeem is dat van Vista, dus fabrikanten hoeven niet weer een nieuwe lijn aan te maken. Randapparatuur die je nu koopt (met een Vista logo) zal dus wel blijven werken.
  • De User interface is wat schoner geworden, een nieuw “Action Center” vangt het grootste deel van die klierige ballonnetjes af.
  • Er is ten opzichte van Vista niet veel verplaatsd of hernoemd.
  • Het UAC systeem (De “Allow …” popup) is wat slimmer geworden, er wordt nu onderscheid gemaakt tussen User acties en software acties. Dus als je dubbelklikt op een .EXE wordt je niet meer lastig gevallen met “do you want to run …”
  • In het folder systeem hebben we nu ‘libraries’, een systeem van door-gelinkte folders.
  • In de beta is een “black box recorder” beschikbaar (psr.exe), een tooltje waarmee een gebruiker gedetaileerd kan vastleggen hoe een probleem ontstaat. Ik hoop dat dit ook in de productie versie terecht komt, kan heel handig zijn.

De aloude programmaatjes Paint en WordPad hebben een face-lift gekregen en hebben nu een echte Ribbon user interface. Paint gebruikt default PNG als formaat en WordPad kan nu ook OOXML (docx) en ODF (Open Office) formaten lezen en schrijven.

WorPad met Ribbon

WorPad met Ribbon

Als trainer moet ik nogal eens werken met verschillende Beamers en dan ben je met Vista en XP overgeleverd aan hoe (on)handig je video driver dat presenteerd. In Windows 7 krijg je met Windows-P dit handige popupje:

Selecteer Display opties

Selecteer Display opties

Er is ook een hele rits met handige toets combinaties bijgekomen vensters op een multi monitor systeem te beheren. Bijvoorbeeld: met Win+Shift+Right je actieve applicatie naar de andere monitor verplaatsen. Eindelijk.

Andre Mussche

Even weer een “dump” van mijn bezigheden, ontdekkingen en ervaringen tijdens het programmeren:
Lees verder…

Andre Mussche

In mijn vorige blogpost over de TC hack, had ik beloofd uit te leggen hoe je de hack (dll) vast in kunt bouwen, zodat het elke keer direct bij het starten van het programma actief wordt.

Dit is onder andere mogelijke door de “DLL Import Table” van de executable aan te passen. Deze table bevat namelijk de statisch gelinkte dlls en hun procedures (dus niet wat het programma zelf runtime dynamisch kan laden!). Deze tabel wordt door Windows in gelezen en alle dll’s worden automatisch geladen. Door nu deze tabel aan te passen, kun je dus je eigen dll laden!


Lees verder…

Andre Mussche

Op mijn huidige detacheringsplek gebruiken ze “Team Coherence” (http://www.teamcoherence.com) voor versie beheer en bug/issue tracking. Ze gebruiken dit pakket heel strict: bijvoorbeeld elke check-in moet een tracker melding hebben, een tracker heeft aantal stadia (waaronder controle door de aanvrager of indiener), versie labels, promotion levels, etc.


Lees verder…

Andre Mussche

Ik had wel eens eerder gehoord dat ADO traag zou zijn, maar ik had met ADO nog geen ervaring.
(trouwens, deze traagheid geldt voor ADO Win32, ADO.net weet ik niet, maar als ik SQL Server Enterprise Manager 2003 (win32) vergelijk met SQL Server Management Studio 2005 (.net) dan is de .Net versie VELE malen trager!).


Lees verder…

Andre Mussche

Als Delphi programmeur was ik nog een beetje sceptisch over .Net, vooral mbt de snelheid. Hiervoor heb ik in Delphi een klein programmaatje gemaakt, wat in 2 for loops wat strings heen en weer kopieert. Dit heb ik gemaakt in een thread, zodat ik ook makkelijk met meerdere threads kon testen. Dit programmaatje heb ik met Delphi 2006 zowel native als met Delphi.Net gecompileerd.


Lees verder…