Here's how I understand the problem, starting with a picture of labeled points:
Given those points:
BC should not rotate relative to AB in any pose.
BC should point at E in all poses.
DE should point at B in all poses.
We control from the position of A and E (and F, but F doesn't really matter for anything here.)
All bones shown maintain their rest poses lengths, but the distance between C and D can change.
We can do that with IK.
Shown here at rest on left, pose on right:
Notice hierarchy on outliner. We've added an additional bone, "ik3", parented to BC. It targets EF with an IK constraint 3 bones long, with stretch enabled. On the bone's IK settings, it is locked in all axes but Y, with 1.0 stretch enabled for it:
(and really, it doesn't matter if its locked or not in Y in this case, that's just a general thing for other problems of this nature.)
Bone BC, meanwhile, has all axes locked for purposes of its IK, in order to maintain its relationship with AB. Neither AB not BC have stretch enabled.
We haven't yet met our third rule, that D points at B, but that's a simple matter:
A damped track constraint solves it nicely, although depending on your mesh, you may wish to use a combination of locked tracks instead.
Edit: BTW, I'm doing everything here with bones in a single armature, which is, believe me, a much more convenient way to rig than to have a bunch of single bone armatures. Sometimes, you can use objects, or single bone armatures, to do the same things as bones, even though it's much less convenient; but here, you just can't run IK except with bone constraints, and the chained bones need to all be part of the same armature. This isn't something inherent to IK, just a Blender limitation.
Ed2: Maybe worth noting that this rig can be streamlined--- since BC never changes relative to AB, these can be combined into a single bone AC. Doing so would, maybe, shave a few nanonseconds off calculation time, at the cost, maybe, of making it a little harder to understand what's happening.