Schrift
[thread]1201[/thread]

Datum/Uhrzeit stellen: gibt's da ne API-Funktion?

Leser: 12


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
steffenw
 2004-02-04 22:09
#12273 #12273
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also wie die Überschrift schon sagt: Wie stelle ich die Uhr meines Windws-PC von perl aus, ohne daß ich "date " und "time" als Kommando ausführe. Da müßte es doch eine API-Funktion geben. Weiß wer wie es geht? Ein Beispiel wäre gut.
$SIG{USER} = sub {love 'Perl' or die};
KKO
 2004-02-04 22:24
#12274 #12274
User since
2003-11-05
124 Artikel
BenutzerIn

user image
sage mal, weiß nix und habe nix gefunden, obwohl ich auch schon mal danach gesucht habe.
Gruß
KKO
esskar
 2004-02-04 23:35
#12275 #12275
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
es gibt z.B.

SetSystemTime (siehe http://msdn.microsoft.com/library....ime.asp)
steffenw
 2004-02-05 17:28
#12276 #12276
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Klasse Esskar, kannst Du mal aufzeigen, wie man sowas in Perl einbindet?\n\n

<!--EDIT|steffenw|1075994942-->
$SIG{USER} = sub {love 'Perl' or die};
esskar
 2004-02-06 00:18
#12277 #12277
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
SYSTEMTIME ist eine struct der Form

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
typedef struct _SYSTEMTIME
{
   WORD wYear;
   WORD wMonth;
   WORD wDayOfWeek;
   WORD wDay;
   WORD wHour;
   WORD wMinute;
   WORD wSecond;
   WORD wMilliseconds;
} SYSTEMTIME,


wenn man dies in perl darstellen will, benutzt man pack...

Code: (dl )
my $winsystime = pack("ssssssss", $wyear, $wmonth, $wdayofweek, $wday, $whour, $wminute, $wsecond, $wmilliseconds);


Laut docu ist die Funktion in der kernel32.dll enthalten...
dann verwendet man am Besten Win32::API (und mit Win32::API::Struct geht es auch ohne pack)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Win32::API::Struct->typedef(SYSTEMTIME => qw{
   WORD wYear,
   WORD wMonth,
   WORD wDayOfWeek,
   WORD wDay,
   WORD wHour,
   WORD wMinute,
   WORD wSecond,
   WORD wMilliseconds
});

Win32::API->Import('kernel32', 'BOOL SetSystemTime(SYSTEMTIME lpPoint)');
my $systime = Win32::API::Struct->new('SYSTEMTIME');

# dann kann man mit $systime->{wYear} = 2004, etcpp. die Werte setzen
# und dann die Funktion aufrufen

SetSystemTime($systime);


viel spaß!\n\n

<!--EDIT|esskar|1076082865-->
steffenw
 2004-02-06 09:56
#12278 #12278
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
:) Waaaahnsinn! Danke!!!
$SIG{USER} = sub {love 'Perl' or die};
Crian
 2004-02-06 13:17
#12279 #12279
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Gibt es auch GetSystemTime? Und wie bist Du an die Information gekommen? Gib uns nicht nur den Fisch, sondern zeig uns wie man angelt ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
steffenw
 2004-02-06 17:02
#12280 #12280
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Esskar hat doch den Link zu Microsoft angegeben, dort stehen doch auch andere Funktionen. Ich hatte API nur noch nie genutzt, deswegen wollte ich sehen, wie das da mit Perl zusammenpaßt.\n\n

<!--EDIT|steffenw|1076079807-->
$SIG{USER} = sub {love 'Perl' or die};
esskar
 2004-02-06 17:53
#12281 #12281
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Crian,06.02.2004, 12:17]Gibt es auch GetSystemTime? Und wie bist Du an die Information gekommen? Gib uns nicht nur den Fisch, sondern zeig uns wie man angelt ;)[/quote]
ist gibt GetSystemTime...

da ich ja eigentlich fast nur C/C++ in Windows programmiere, kenne ich fast alle API Befehle...
und der Rest steht alles im Win32::API pod file!
steffenw
 2004-02-06 23:52
#12282 #12282
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Gleich hat's nicht funktioniert, eine paar use'e fehlten und die Kommas im qw{} waren zu viel. Und jetzt funktioniert es. Es stellt die Zeit auf heute, 23:38:30 Uhr. Ich bin davon ausgegangen, daß ich den Wochentag nicht unbedingt angeben muß.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!perl
use strict;
use warnings;
use Win32::API;
use Win32::API::Struct;
Win32::API::Struct->typedef(SYSTEMTIME => qw{
  WORD wYear
  WORD wMonth
  WORD wDayOfWeek
  WORD wDay
  WORD wHour
  WORD wMinute
  WORD wSecond
  WORD wMilliseconds
});

Win32::API->Import('kernel32', 'BOOL SetSystemTime(SYSTEMTIME lpPoint)');
my $systime = Win32::API::Struct->new('SYSTEMTIME');

# dann kann man mit $systime->{wYear} = 2004, etcpp. die Werte setzen
# und dann die Funktion aufrufen

@{$systime}{qw/wYear wMonth wDay wHour wMinute wSecond wMilliseconds/} = qw/2004 2 6 22 38 30 0/;

SetSystemTime($systime);
\n\n

<!--EDIT|steffenw|1076104421-->
$SIG{USER} = sub {love 'Perl' or die};
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2004-02-04 22:09.