Forum: PC-Programmierung win7 Funktionstaste belegen


von grundschüler (Gast)


Lesenswert?

Problem Taste "c" ist kaputt.

Lösung "c" auf F8 legen - nur wie?
Idee: c-programm an f8 anbinden

#c-Programm:
1
namespace WindowsFormsApplication1
2
{
3
    public partial class Form1 : Form
4
    {
5
        public Form1()
6
        {
7
            InitializeComponent();
8
     }
9
10
       private void Form1_Load(object sender, EventArgs e)
11
12
        {
13
          string textData = "I want to put this string on the clipboard.";
14
             textData = "c";
15
            Clipboard.SetData(DataFormats.Text, (Object)textData);
16
           // Clipboard.GetData(DataFormats.Text);
17
            Clipboard.GetText();
18
       }
19
    }
20
}

Problem: durch aufruf der form geht der Fokus verloren. Wie schreibt man 
ein c-programm ohne form-Aufruf?

geht sicher auch einfacher - Danke für Unterstützung.

von Oli W. (trewq)


Lesenswert?

Oder einfach das Tastaturlayout ändern, z.B. mit SharpKeys: 
https://github.com/randyrants/sharpkeys

von Schlaumaier (Gast)


Lesenswert?

Wenn du KEINE Tastatur mit Display hast, bau die Tastatur auseinander.

Bei meiner muss ich dafür jede Menge Minischrauben lösen, und sie dann 
leicht Ausknacksen. Dann die Platine und die Gummimatte waschen, mit 
einer Zahnbürste geht das Prima.

Man kann normalerweise JEDE Taste lösen in den man sie Ausklinkt. Die 
wird i.d.R. nur von ein Halterung mit Druck gehalten. Größere Tasten 
haben einen Drahtbügel damit sie nicht wackeln.

Die Lösen und die Essensreste unter der Tastatur entfernen.

Alles Zusammenbauen und das war es.

Warnung : Min. 3 Std. an einen Warmen Ort trocken lassen, selbst wenn 
man sie sehr sorgfältig getrocknet hat.

Ist die beste Lösung.

Bei einer Tastatur mit Display funktioniert das auch, aber man muss die 
Kontakte mit einen feuchten Tuch und Isopropanol abwischen. Dabei darauf 
achten das KEINE Feuchtigkeit an das Display kommt.

Alle Displays die ich kennen streben an Feuchtigkeit.


Tastaturen mit echten Schaltern, hilft nur den Schalter auszutauschen.
Man kann versuchen die Tasterkappe zu lösen, und hoffen das sich da 
Dreck befindet.  Solche Tastaturen sind aber sehr selten. Ich kennen nur 
die Cherry-3000 die die hat.

Diese Vorgehensweise hat bei allen Tastaturen die ich die letzten 30 
Jahre zwischen die Finger bekommen habe, und das sind ca. 100 
verschiedene Modelle immer funktioniert. Sie funktioniert sogar bei 
Fernbedienungen, weil ist die selbe Technik.

Aber ich kenne nicht alles.

von Schlaumaier (Gast)


Lesenswert?

Schlaumaier schrieb:
> Man kann normalerweise JEDE Taste lösen in den man sie Ausklinkt. Die
> wird i.d.R. nur von ein Halterung mit Druck gehalten. Größere Tasten
> haben einen Drahtbügel damit sie nicht wackeln.

Hinweis.

Das macht man von HINTEN wenn die Tastatur AUF ist. Die Haken befinden 
sich nämlich unter den Plastik. Eine kleine Telefonzange wirkt dann 
Wunder.

von pegel (Gast)


Lesenswert?

Oder Unicode benutzen

http://www.fileformat.info/tip/microsoft/enter_unicode.htm

43 -> C
63 -> c

kann ich allerdings am Notebook nicht testen.

von grundschüler (Gast)


Lesenswert?

Danke, aber an der Taste basteln bringt nichts und sharpkeys 
funktioniert nicht.

Wie schreibt man ein c#-programm ohne form-Aufruf?

das Programm soll nur c ins clipboard laden und das clipboard dann 
abrufen?

c#-option leeres Projekt - da geht gar nichts
c#-option Konsolenanwendung - da fehlt das clipboard


Es müsste doch möglich sein, vor Aufruf der c#-Form Befehle auszuführen?

von Schlaumaier (Gast)


Lesenswert?

Bei VB geht das.

Das Zauberwort heißt TIMER.

Private Sub hp_b_zwischenablage_kontrollieren_Click(sender As 
System.Object, e As System.EventArgs) Handles 
hp_b_zwischenablage_kontrollieren.Click

  my_Timer.Interval = 1000
  If my_Timer.Enabled = False Then
      Clipboard.Clear()
      my_Timer.Enabled = True
      Exit Sub
  End If
  If my_Timer.Enabled = True Then
      Clipboard.Clear()
      my_Timer.Enabled = False
      Exit Sub
  End If
end sub

 Private Sub TimerEventProcessor(myObject As Object, ByVal myEventArgs 
As EventArgs) Handles my_Timer.Tick
    tx$ = Trim(Clipboard.GetText)
    If Len(tx$) > 0 Then
      mach_was = ich_mach_was ' hier text für Arbeit einfügen
      Clipboard.Clear() ' wichtig damit der nicht 2 x auslößt.
    End If
  End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Mit diesen Code lese ich die Zwischenablage aus, OHNE das das Programm 
irgend ein Focus hat, und verarbeite die Daten im Programm.

Viel Spass beim Umsetzen in C . Sollte aber auch gehen, ist ja fast das 
selbe, nur andere Syntax.

von Schlaumaier (Gast)


Lesenswert?

Clipboard.SetText-Methode (String)

Löscht die Zwischenablage und fügt dann im Text-Format oder 
UnicodeText-Format Textdaten hinzu, je nach Betriebssystem.


Scheint in C vielleicht schwerer zu sein.

https://docs.microsoft.com/en-us/windows/win32/dataxchg/using-the-clipboard

von c-hater (Gast)


Lesenswert?

grundschüler schrieb:
> Problem Taste "c" ist kaputt.
>
> Lösung "c" auf F8 legen - nur wie?
> Idee: c-programm an f8 anbinden

Das eine Problem deines Programms ist die Ausgabe per Clipboard. Das ist 
natürlich sowieso Unsinn, das Clipboard gehört dem User und niemandem 
sonst. Nichts und niemand hat da was drüber zu transportieren, außer der 
User befiehlt es explizit. Dieses Problem kannst du aber leicht lösen, 
indem du statt des Clipboard die Sendkeys-Klasse benutzt. Damit kannst 
du beliebige Tastendrücke an die Anwendung senden, die den Fokus hat.

Viel schwieriger ist das Problem der Eingabe. Jedenfalls, wenn dein 
Programm allen laufenden Anwendungen bezüglich der defekten Tastatur auf 
die Sprünge helfen können soll.

Wenn es aber nur darum geht, deiner eigenen Anwendung zu helfen, ist das 
easy. Musst du halt in allen Forms KeyPreview auf true stellen und die 
Key-Events der Forms behandeln. Triffst du dort auf die Eingabe von F8, 
schluckst du das Event und schickst statt dessen per SendKeys halt ein C 
oder in c raus, je nachdem ob zusätzlich zu F8 auch Shift gedrückt war 
oder nicht.

Willst du allerdings für alle Anwendungen auf dem Rechner eine Art 
Hintergrunddienst mit dieser Funktionalität bereitstellen, dann wird's 
kompliziert. Ohne Kenntnisse des WinAPI hast du keine Chance. Was du 
dann brauchst, ist Input-Event-Hooking. Das kann man auch in C# 
umsetzen, allerdings nicht, ohne großzügige Ausflüge in nativen Code zu 
unternehmen.

Für deinen Kenntnisstand sehe ich da keine realistische Chance einer 
Umsetzung...

von Schlaumaier (Gast)


Lesenswert?

Es gibt aber auch Phrasen-Programme. Vielleicht wäre das was für dich.

Hat ein Freund von mir. Der drückt eine Tastenkombi und das Prg. 
schreibt den ganzen Text der hinter der Kombi eingestellt ist.  Google 
mal danach.
Muss je kein langer Name sein, sondern nur ein e ;)

von Walter T. (nicolas)


Lesenswert?

Wie schreibt man ein "C"-Programm ohne "C"-Taste?

von grundschüler (Gast)


Lesenswert?

CCCCC - gesChrieben mit Phraseexpress. Geht also sChon mal - vielen 
Dank. Zu WeihnaChten gibt’s dann ne neue Tastatur - danke für alle 
Antworten.

von Schlaumaier (Gast)


Lesenswert?

grundschüler schrieb:
> CCCCC - gesChrieben mit Phraseexpress.

Ich glaube so heisst das Prg. das mein Freund nutzt sogar.

von Matthias L. (limbachnet)


Lesenswert?

Mit AutoHotKey geht sowas auch - und noch einiges mehr.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.