1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. djtraumwelt

Beiträge von djtraumwelt

  • defragmentierung selber gemacht

    • djtraumwelt
    • 11. März 2011 um 17:26

    Ich suche schon seit ewigkeiten nach einem Defragmentierungsprogramm, das NTFS so defragmentiert, dass hinter jeder datei ein kleiner Freiraum gelassen wird. Ein solches Programm scheint es nicht zu geben, also dachte ich mir, ich schreib selber eins. Gibts es für so ein Projekt passende librarys oder howtos, sonstiges? Habe nämlich überhaupt keine Ahnung mit was ich so auf das dateisystem zugreifen kann, dass ich es defragmentieren und platz hinter jeder datei lassen kann.

  • mit winapi den standartbrowser öffnen

    • djtraumwelt
    • 29. August 2010 um 11:08
    Code
    WinExec("explorer http://url.com", SW_SHOW);


    führt bei einigen Usern zu einer Fehlermeldung. Gibt es einen eleganteren, womöglich auch komplizierteren weg?

  • [Win32] große Uhr im Vordergrund, transparent

    • djtraumwelt
    • 6. Mai 2010 um 20:20

    Also, das mit den LayeredWindows hab ich "ausgecheckt" und die Uhr funktioniert soweit. Aber ein großes Problem an dieser Lösung ist, dass das clicken in die Ziffern ein clicken ins Fenster bedeutet. Das soll so nicht sein. Ich möchte die Uhr zwar angezeigt haben, aber sie nicht anklicken können, steuern über das tray (wenn ich denn auser beenden was zum steuern brauchen würde). Weil man ja alles auf seinem bildschirm anklicken können soll, müsste man durch das fenster durch clicken können. Das scheint mir aber nicht realisierbar zu sein. Falls es das doch sein sollte, dann bitte hier posten wie, dann ist die uhr auch schon fertig. Ansonsten bräuchte ich ne, vermutlich viel kompliziertere, möglichkeit, diese uhr zu realisieren.

    edit: jetzt wird mir erst klar, was ihr mit durchklicken gemeint habt. ich bin halt manchmal n bissl bescheuert. jedenfalls, durch die transparenten teile kann man durchklicken, nur durch die gezeichneten teile, die ziffern, eben nicht.

    edit 2: hab das problem lösen können: WS_EX_TRANSPARENT

    das ergebnis gibt es unter http://www.wundervollemusik.de/Uhr.zip

  • [Win32] große Uhr im Vordergrund, transparent

    • djtraumwelt
    • 6. Mai 2010 um 11:38

    Also, wenn ich in GetDC(0) reinzeichne, dann sehe ich davon nix. Scheint nicht so einfach zu gehen.
    Wie macht man ein Teiltransparentes Fenster? (das mit dem durchklicken würde ich dann mit einem Tray lösen, welches ein TrackPopupMenu aufmacht bei rechtsclick)

    edit: GetWindowDC(0) liefert das gewünschte ergebnis.

  • [Win32] große Uhr im Vordergrund, transparent

    • djtraumwelt
    • 6. Mai 2010 um 10:46

    Ich möchte gerne eine Uhr schreiben, die nicht in einem Fenster dargestellt wird, sonder transparent über den kompletten Bildschirm gezeichnet wird. Digital am liebsten, so dass dann einfach in der mitte des Bildschirms z.b. 10:39 steht. Sollte, wie der Mauszeiger funktionieren und oberhalb von allem anderen gezeichnet werden.

    Mein Problem ist jetzt, dass ich überhaupt keine Ahnung von Treiberprogrammierung, falls ich ne art maustreiber-ähnlichen treiber schreiben müsste, bzw. hab ich keine Ahnung, ob ich irgendwie anders auf den Bildschirminhalt zugreifen kann, ohne gleich directx beherrschen zu müssen.

    Also, wenn da jemand ne Idee hätte, wie ich das am einfachsten realisieren kann, dann bin ich dankbar für jede Hilfe. Ergebnisse werden natürlich wieder kostenlos hier veröffentlich, damit andere User, die sowas auch haben wollen, einfach downloaden können, bzw. jemand am quellcode rumbasteln kann.

  • Win32 EDIT Control

    • djtraumwelt
    • 2. April 2009 um 05:10

    Habs inzwischen geschafft:

    Code
    GetClassInfo(NULL,"EDIT",&wc);
       OldWndProc=wc.lpfnWndProc;
       wc.lpfnWndProc=EditProc;
       wc.hInstance=hInst;
       wc.lpszClassName="EDIT";
       RegisterClass(&wc);
       hEdit=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","",WS_CHILD | WS_BORDER | ES_AUTOHSCROLL | ES_LEFT,10,WINHGT-24,WINWID-20,24,hWnd,(HMENU)1,hInst,0);
       ShowWindow(hEdit,SW_SHOW);
       SendMessage(hEdit,EM_SETLIMITTEXT,999,0);
    Code
    LRESULT CALLBACK EditProc (HWND hEditProc, UINT msg, WPARAM wParam, LPARAM lParam) {
    
    
     if (locker==0)
     if (msg==WM_KEYDOWN) {
      if (wParam==VK_RETURN) {
       mess[0]=3;
       mess[1]=231;
       mpos=SendMessage(hEdit,EM_GETLINE,0,(LPARAM)mess);
       mess[mpos]=0;
       comsig=1;
       SendMessage(hEdit,EM_SETSEL,0,-1);
       SendMessage(hEdit,EM_REPLACESEL,TRUE,(LPARAM)(LPCTSTR)"");
       return 0;
      }
      if (wParam == VK_UP) {
       ofn.lStructSize=sizeof(OPENFILENAME);
       ofn.hwndOwner=glob;
       filter[0]='*';
       filter[1]='.';
       filter[2]='*';
       filter[3]=0;
       filter[4]='*';
       filter[5]=0;
       filter[6]=0;
    
    
       ofn.lpstrFilter=filter;
       ofn.lpstrCustomFilter=NULL;
       ofn.nFilterIndex=0;
       filename[0] = 0;
       ofn.lpstrFile=filename;
       ofn.nMaxFile=660;
       ofn.lpstrFileTitle=filetitle;
       ofn.nMaxFileTitle=400;
       ofn.lpstrInitialDir=NULL;
       ofn.lpstrTitle=NULL;
       ofn.Flags=OFN_EXPLORER;
       ofn.lpstrDefExt=NULL;
       if (GetOpenFileName(&ofn)!=0)
        comsig=2;
       return 0;
      }
     }
    
    
     return CallWindowProc(OldWndProc,hEditProc,msg,wParam,lParam);
    }
    Alles anzeigen
  • Win32 EDIT Control

    • djtraumwelt
    • 1. April 2009 um 11:41

    Hab mir n Singleline-Edit-Child-Window gemacht in das ich Text eingeben kann. Bei drücken der Enter-Taste soll der Text nun abgeschickt werden. Problem ist, dass bei drücken der Enter-Taste nix passiert. Hab mir noch n DEFPUSHBUTTON dazu gemacht, wenn ich den anklicke, dann schickt er den Text ab, das funktioniert einwandfrei. Was ich jetzt bräuchte, wär ne Idee, wie der Button automatisch gedrückt wird, wenn im Edit-Window "reingeEntert" wird, bzw. müsste ich überhaupt mal rausfinden, wann der User "reinEntert".

  • Tray verschwindet

    • djtraumwelt
    • 29. November 2008 um 12:39
    Zitat von Paulchen

    Hast du das gemacht, um Windows-Programmierung zu lernen, oder, um diese Funktion zu erhalten? Falls Letzteres zutrifft, hast du wohl das Rad neu erfunden.

    Beides =) Zum einen möchte ich irgendwann mal möglichst gut programmieren können. Zum anderen habe ich diese Funktion wirklich gebraucht und nichts wirklich kostenloses oder gar open-source für windows gefunden.

    Naja, warum nicht 25 Blöcke? Ist doch ne schöne Zahl =)) das reicht aus, denke ich.

  • Tray verschwindet

    • djtraumwelt
    • 28. November 2008 um 17:51

    Ok, hab den Fehler gefunden: mir hat das

    Code
    nid.hWnd=hWnd;


    gefehlt =(

    Hier nochmal der komplette Code, für alle die Ihr Clipboard auf 25 Speicherblöcke erweitern wollen:

    C
    #include <string.h>
    #include <windows.h>
    #include <shellapi.h>
    
    
    #define WM_SHELLNOTIFY WM_USER+5
    
    
    #define WINWID 200
    #define WINHGT 520
    
    
    HINSTANCE hInst;
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    DWORD WINAPI checkfunc (LPVOID);
    HANDLE Hcheck;
    
    
    NOTIFYICONDATA nid = {0};
    HMENU hPopup;
    
    
    HANDLE cdata;
    HWND hglob;
    HMENU hMenu;
    int endsig=0;
    int y;
    struct inhalt {
     char inh[10000];
    } inhalt[25];
    
    
    char checker[10000];
    
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int nCmdShow) {
     MSG msg;
     BOOL bRet;
     hInst=hInstance;
     HWND hWnd;
     int xwin=0;
     int ywin=0;
    
    
     char winclass[] = "Fensterklasse";
     WNDCLASS wc;
    
    
     wc.style = CS_HREDRAW | CS_VREDRAW;
     wc.lpfnWndProc = WndProc;
     wc.cbClsExtra = 0;
     wc.cbWndExtra = 0;
     wc.hInstance = hInstance;
     wc.hIcon = LoadImage (hInstance,"icon.ico",IMAGE_ICON,32,32,LR_LOADFROMFILE);
     wc.hCursor = LoadCursor (NULL, IDC_ARROW);
     wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
     wc.lpszMenuName = NULL;
     wc.lpszClassName = winclass;
    
    
     RegisterClass (&wc);
    
    
     xwin=GetSystemMetrics(SM_CXSCREEN);
     ywin=GetSystemMetrics(SM_CYSCREEN);
     xwin /= 2;
     xwin -= (WINWID / 2);
     ywin /= 2;
     ywin -= (WINHGT / 2);
    
    
     hWnd = CreateWindow (winclass, "WinClipper", WS_OVERLAPPEDWINDOW, xwin, ywin, WINWID, WINHGT, NULL, NULL, hInstance, NULL);
     hglob=hWnd;
    
    
     ShowWindow(hWnd, nCmdShow);
     UpdateWindow(hWnd);
    
    
     while( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
     }
    
    
     return msg.wParam;
    }
    
    
    LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
     HDC hdc;
     HBRUSH hbr;
     PAINTSTRUCT ps;
     int xdiff, ydiff, yy;
     RECT crect, wrect;
     POINT pt;
    
    
     if (msg == WM_CREATE) {
      GetWindowRect(hWnd,&wrect);
      GetClientRect(hWnd,&crect);
      xdiff=(wrect.right - wrect.left) - crect.right;
      ydiff=(wrect.bottom - wrect.top) - crect.bottom;
      wrect.left=wrect.left - (xdiff / 2);
      wrect.top=wrect.top - (ydiff / 2);
      xdiff += WINWID;
      ydiff += WINHGT;
      MoveWindow(hWnd,wrect.left,wrect.top,xdiff,ydiff,TRUE);
      Hcheck=CreateThread(NULL,0,checkfunc,NULL,0,NULL);
      for (y=0; y < 25; y++) {
       sprintf(inhalt[y].inh,"---");
      }
     }
     if (msg == WM_PAINT) {
       hdc=BeginPaint(hWnd,&ps);
        for (y=0; y < 25; y++) {
        crect.left=0;
        crect.top=(y*20);
        crect.right=WINWID;
        crect.bottom=(y*20)+20;
        hbr=GetStockObject(BLACK_BRUSH);
        FillRect(hdc,&crect,hbr);
        DeleteObject(hbr);
        DrawText(hdc,inhalt[y].inh,-1,&crect,DT_CENTER|DT_VCENTER);
       }
       EndPaint(hWnd,&ps);
       return 0;
     }
     if (msg == WM_LBUTTONDOWN) {
      yy=HIWORD(lParam);
      yy/=20;
      if (yy < 25) {
       OpenClipboard(NULL);
       EmptyClipboard();
       HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (lstrlen(inhalt[yy].inh)+1));    //allocate memory as big as the text-string
       LPTSTR sMem = (CHAR*)GlobalLock(hMem);
       memcpy(sMem, inhalt[yy].inh, (lstrlen(inhalt[yy].inh)+1));
       GlobalUnlock(hMem);
       SetClipboardData(CF_TEXT, hMem);
       CloseClipboard();
      }
     }
     if (WM_SHELLNOTIFY && wParam==100) {
      if (lParam==WM_RBUTTONDOWN) {
       DestroyMenu(hPopup);
       hPopup=CreatePopupMenu();
       for (y=0; y < 25; y++) {
        AppendMenu(hPopup,MF_STRING,1000+y,inhalt[y].inh);
       }
       AppendMenu(hPopup,MF_STRING,1026,"Beenden");
       GetCursorPos(&pt);
       TrackPopupMenu(hPopup,TPM_RIGHTALIGN,pt.x,pt.y,0,hWnd,0);
      }
      if (lParam==WM_LBUTTONDBLCLK) {
       ShowWindow(hWnd,SW_RESTORE);
      }
     }
     if (msg == WM_COMMAND && lParam==0) {
      if (LOWORD(wParam)>=1000 && LOWORD(wParam)<1025) {
       yy=(LOWORD(wParam))-1000;
       OpenClipboard(NULL);
       EmptyClipboard();
       HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (lstrlen(inhalt[yy].inh)+1));    //allocate memory as big as the text-string
       LPTSTR sMem = (CHAR*)GlobalLock(hMem);
       memcpy(sMem, inhalt[yy].inh, (lstrlen(inhalt[yy].inh)+1));
       GlobalUnlock(hMem);
       SetClipboardData(CF_TEXT, hMem);
       CloseClipboard();
      }
      if (LOWORD(wParam)==1026) {
       DestroyWindow(hWnd);
      }
     }
     if (msg == WM_SIZE && wParam==SIZE_MINIMIZED) {
      hPopup=CreatePopupMenu();
      for (y=0; y < 25; y++) {
       AppendMenu(hPopup,MF_STRING,1000+y,inhalt[y].inh);
      }
      AppendMenu(hPopup,MF_STRING,1026,"Beenden");
      ShowWindow(hWnd, SW_HIDE);
      nid.cbSize=sizeof(NOTIFYICONDATA);
      nid.hWnd=hWnd;
      nid.uID=100;
      sprintf(nid.szTip,"Hallo");
      nid.uFlags=NIF_ICON+NIF_MESSAGE;
      nid.uCallbackMessage=WM_SHELLNOTIFY;
      nid.hIcon=LoadImage (hInst,"icon.ico",IMAGE_ICON,32,32,LR_LOADFROMFILE);
      Shell_NotifyIcon(NIM_ADD, &nid);
      return 0;
     }
     if (msg == WM_CLOSE) {
      Shell_NotifyIcon(NIM_DELETE,&nid);
      endsig=1;
     }
     if (msg == WM_DESTROY) {
      PostQuitMessage(0);
      return 0;
     }
    
    
     return DefWindowProc(hWnd,msg,wParam,lParam);
    }
    
    
    DWORD WINAPI checkfunc (LPVOID var) {
     while(endsig==0) {
      OpenClipboard(hglob);
      cdata=GetClipboardData(CF_TEXT);
      CloseClipboard();
      sprintf(checker,"%s",cdata);
      if (strcmp(checker,inhalt[0].inh)==0) {
       Sleep(250);
      } else {
       for (y=24; y > 0; y--) {
        sprintf(inhalt[y].inh,"%s",inhalt[y-1].inh);
       }
       sprintf(inhalt[0].inh,"%s",checker);
       InvalidateRect(hglob,NULL,FALSE);
      }
     }
     ExitThread(0);
     return 0;
    }
    Alles anzeigen
  • Tray verschwindet

    • djtraumwelt
    • 28. November 2008 um 16:53
    Zitat von Ringding

    Das Tray-Icon verschwindet immer dann auf die von dir beschriebene Art und Weise, wenn der Prozess nicht mehr lebt, der es erzeugt hat.

    Das hilft mir nicht weiter, der Prozess lebt nämlich noch. Hab das Tray mal Testweise in der Winmain schon erstellt und der Prozess lebt auf jeden fall, zumindest zeigt der Taskmanager mir die Tray.exe noch an, nur das Tray an sich ist weg.

  • Tray verschwindet

    • djtraumwelt
    • 28. November 2008 um 10:43

    ja, was weiß ich, warum die schrift rot ist, hab nichts anders gemacht, als bei anderen foren.

  • Tray verschwindet

    • djtraumwelt
    • 28. November 2008 um 10:35
    C
    [COLOR=red][COLOR=Black]#include <string.h>
    #include <windows.h>
    #include <shellapi.h>
    
    
    #define WM_SHELLNOTIFY WM_USER+5
    
    
    HINSTANCE hInst;
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    HWND glob;
    NOTIFYICONDATA nid = {0};
    HMENU hPopup;
    char winclass[] = "Lutschendes Prog";
    
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int nCmdShow) {
     MSG msg;
     BOOL bRet;
     hInst=hInstance;
     HWND hWnd;
     int xwin=0;
     int ywin=0;
    
    
     WNDCLASS wc;
    
    
     wc.style = CS_HREDRAW | CS_VREDRAW;
     wc.lpfnWndProc = WndProc;
     wc.cbClsExtra = 0;
     wc.cbWndExtra = 0;
     wc.hInstance = hInstance;
     wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
     wc.hCursor = LoadCursor (NULL, IDC_ARROW);
     wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
     wc.lpszMenuName = NULL;
     wc.lpszClassName = winclass;
    
    
     RegisterClass (&wc);
    
    
     xwin=GetSystemMetrics(SM_CXSCREEN);
     ywin=GetSystemMetrics(SM_CYSCREEN);
     xwin /= 2;
     xwin -= 200; //400 Breit
     ywin /= 2;
     ywin -= 50; //100 Hoch
    
    
     hWnd = CreateWindow (winclass, "WinClipper", WS_OVERLAPPEDWINDOW, xwin, ywin, 400, 100, NULL, NULL, hInstance, NULL);
     glob=hWnd;
    
    
     ShowWindow(hWnd, nCmdShow);
     UpdateWindow(hWnd);
    
    
     while( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
     }
    
    
     return msg.wParam;
    }
    
    
    LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
     HDC hdc;
     PAINTSTRUCT ps;
     HBRUSH hbr;
     RECT crect, wrect;
     POINT pt;
    
    
     if (msg == WM_SIZE && wParam==SIZE_MINIMIZED) {
      hPopup=CreatePopupMenu();
      AppendMenu(hPopup,MF_STRING,1000,"&Close Server");
      ShowWindow(hWnd, SW_HIDE);
      nid.cbSize=sizeof(NOTIFYICONDATA);
      nid.uID=100;
      sprintf(nid.szTip,"Hallo");
      nid.uFlags=NIF_ICON;
      nid.hIcon=LoadIcon (NULL, IDI_APPLICATION);
      Shell_NotifyIcon(NIM_ADD, &nid);
     }
     if (msg == WM_DESTROY) {
      PostQuitMessage(0);
      return 0;
     }
    
    
     return DefWindowProc(hWnd,msg,wParam,lParam);
    }[/COLOR]              [/COLOR]
    Alles anzeigen

    das Fenster verschwindet, wie es soll, das Tray erscheint, wie es soll, und verschwindet dann, sobald man mit der Maus drüber geht, was es nicht soll. Warum verschindet das Tray?

Rechtliches

Impressum

Datenschutzerklärung